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.