Categorias:

Shortcode para email com link codificado, no WordPress

Uma das maneiras de ajudar a evitar spam, é ter o email no link codificado, dificultando a cópia do email pelos robôs.

A função para criar o shortcode:

/**
 * mailto shortcode
 *
 * @author Difluir
 * @link https://code.difluir.com/
 */
if ( ! function_exists('difluir_shortcode_mailto') ) :
	function difluir_shortcode_mailto( $atts, $content = null ) {
		$atts = shortcode_atts( array(
	        'link' => 'false'
	    ), $atts, 'mailto' );
	    
	    if ( ! $content ) {
	    	return;
	    }

	    $output = '';
	    $encodedmail = '';

	    if ( !empty($content) ) {
	        for ( $i = 0; $i < strlen($content); $i++ ) {
	        	$encodedmail .= "&#" . ord($content[$i]) . ';';
	        }

	        if ( isset($atts['link']) && $atts['link'] == 'true' ) {
		        $output .= '<a href="mailto:'.$encodedmail.'">'.$encodedmail.'</a>';
		    } else {
		    	$output .= $encodedmail;
		    }
	    }

	    return $output;
	}
endif;

if ( ! shortcode_exists('mailto') ) {
	add_shortcode( 'mailto',  'difluir_shortcode_mailto' );
}

Para criar um link com email, é só usar o shortcode abaixo:

[mailto link="true"]contact@site.com[/mailto]

Se quiser apenas mostrar o email, sem link, use o shortcode abaixo:

[mailto]contact@site.com[/mailto]

Assim, ao visualizar o site o email aparece normalmente, mas ao olhar pelo código fonte, o email está codificado.

Claro que isso não evita que uma pessoa copie manualmente o email e o adicione em uma lista de spam, esse shortcode apenas dificulta que um robô faça a cópia do email.