Ofuscar email en WordPress

Ofuscar email en WordPress

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.

Deja una respuesta

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