Sin duda alguna, el llamado «correo basura» representa uno de los mayores quebraderos de cabeza para muchas personas. Un bombardeo continuo de correos electrónicos —publicidad, fraudes, etc.— llega a nuestra bandeja de entrada y todos nos preguntamos cómo obtienen nuestra dirección de correo. En primer lugar, más de una empresa vende nuestros datos al mejor postor sin el menor escrúpulo. En segundo lugar, los malos obtienen direcciones de correo mediante unas arañas que recorren millones de páginas todos los días con el único objetivo de capturar aquéllas.
Para quien tiene una página web, el problema se acrecienta pues solemos indicar nuestra dirección de correo para facilitar a los visitantes una forma de contacto. Además, la ley nos obliga a ello.
Si usas WordPress, la solución es bastante sencilla ya que tenemos una función específica para ello: antispambot.
NOTA IMPORTANTE: para ver los efectos de la ofuscación debemos acceder al código fuente de la página. Sólo allí veremos que la dirección de correo es iliegible.
1) En entradas o páginas
He escogido el plugin Anti-Spambot porque es muy sencillo (no tiene ajustes) y usa la función que trae por defecto WordPress. Solo un detalle: si queréis usar «hex encoding», hay que editar y hacer un cambio de forma que solo afecte a la dirección de correo usada como enlace. Buscamos la línea
$url = esc_url('mailto:' . antispambot( $email, $hex_encoding ) . $urlpart );
y cambiamos la variable $hex_encoding
por «1»
$url = esc_url('mailto:' . antispambot( $email, 1 ) . $urlpart );
Una vez activado el plugin, podremos usar los siguientes shortcodes:
[email]usuario@ejemplo.com[/email]
: la dirección de correo como enlace y como texto del enlace.[email]usuario@ejemplo.com?subject=foo+bar&body=baz[/email]
Enlace con asunto (subject) y cuerpo (body) ya cumplimentados.[email nolink=1]usuario@ejemplo.com[/email]
: sin enlace. Aparece la dirección como texto plano.[email linktext="click here"]usuario@ejemplo.com[/email]
: muestra el texto «click here» con un enlace a la dirección de correo.
2) En el sidebar
Opción 1: poner el shortcode en un widget "Texto".
Opción 2: poner el shortcode en un widget "HTML personalizado". En este caso tenemos que añadir en el archivo «functions.php» del tema o en nuestro plugin personal lo siguiente:
add_filter( 'widget_text', 'do_shortcode' );
3) En los menús
En los menús que traen por defecto los temas no se pueden usar shortcodes. Tenemos que añadir un "Enlace personalizado" al menú donde el campo URL se cumplimenta con un enlace a la dirección de correo:
mailto:usuario@ejemplo.com
En segundo lugar, debemos añadir el siguiente código en el archivo «functions.php» del tema activo o en nuestro plugin personal.
// Ofuscar email en los menus if ( ! function_exists( 'ofuscar_email_menu' ) ) { function ofuscar_email_menu( $link ) { $href = $link['href']; // Si el enlace comienza con mailto, asumimos que es un link al email if ( $href && preg_match( '/^mailto/i', $href ) ) { // Reemplazamos con una version segura $href = preg_replace( '/^mailto:(.*)/i', '$1', $href ); $href = esc_url ('mailto:' . antispambot( $href, 1 ) ); $link['href'] = $href; } return $link; } add_filter( 'nav_menu_link_attributes', 'ofuscar_email_menu' ); }
4. En la plantilla
Opción 1: texto del enlace distinto a la dirección de correo.
<?php echo '<a href="' . esc_url ('mailto:' . antispambot( 'usuario@ejemplo.com', 1 ) ) . '">'. htmlspecialchars ( 'texto_enlace' ) . '</a>';?>
Opción 2: la dirección de correo como texto del enlace:
<?php $direccioncorreo = 'usuario@ejemplo.com'; echo '<a href="' . esc_url ('mailto:' . antispambot( $direccioncorreo, 1 ) ) . '">'. antispambot( $direccioncorreo ) . '</a>'; ?>
NOTA: en todos los casos, sustituir «usuario@ejemplo.com» y «texto_enlace» por su valor correspondiente.