WordPress: ocultar automáticamente las direcciones de email a los robots de spam

Tutorial WordPress

Escribir direcciones de correo electrónico en una página puede llegar a ser un inmenso problema, ya que hay bots que se dedican a escanear todas las páginas de Internet para posteriormente usar esas cuentas para envío de spam. No siempre es posible evitarlo, usando formularios de contacto en lugar de direcciones de correo electrónico, ya que algunas personas u organizaciones necesitan tenerlos bien visibles al público. Por eso, se desarrollan soluciones ingeniosas capaces de sortear este problema.

Una de estas soluciones es evitar mostrar el patrón algo@algo.algo en el código HTML de la página, y eso es lo que hacen algunos desarrolladores para intentar engañar a estos robots cada día más inteligentes. Si no es una solución final y perfecta, sí es desde luego mucho mejor que ponérselo fácil.

Podríamos usar CSS encerrando las direcciones de email en etiquetas <span></span> y volviendo invisible ese trozo o incluso cambiándolo por otra cosa, pero no es práctico, ya que habría que hacerlo en todas partes donde se publique una dirección de correo.

También podemos usar este plugin u otro similar para ofuscar direcciones de correo electrónico en tu sitio.

O bien optar por esta solución, que podemos añadir al archivo functions.php de nuestro tema o tema hijo (Child Theme). Así, en cualquier post, página o custom post-type donde aparezca una dirección de correo el código HTML devolverá un amasijo de cosas raras difíciles (que no imposibles) de reconocer como direcciones de email.

Por ejemplo, el mail de john.doe@mysite.com se vería así:

&#106;&#111;h&#110;&#46;&#100;&#111;&#101;&#64;mysit&#101;.&#99;&#111;&#109;

Código para ofuscar direcciones de correo electrónico en WordPress

//OCULTAR DIRECCIONES DE EMAIL
function security_remove_emails($content) {
    $pattern = '/([a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4})/i';
    $fix = preg_replace_callback($pattern, "security_remove_emails_logic", $content);
    return $fix;
}
function security_remove_emails_logic($result) {
    return antispambot($result[1]);
}
add_filter( 'the_content', 'security_remove_emails', 20 ); //ocultar en posts
add_filter( 'comment_text', 'security_remove_emails', 20 ); //ocultar en comentarios

Si vas a publicar direcciones de correo electrónico en widgets de texto, puedes añadir esta línea

add_filter( 'widget_text', 'security_remove_emails', 20 ); //ocultar en widgets

Esta forma de hacerlo usa la función antispambot explicada en esta página  del Codex de WordPress y nuestro código está basado en el de WPrecipes.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *