Menú de Contacto que protege tu email en WordPress sin plugins

¿Quieres añadir un enlace «Contacto» en el menú de tu sitio WordPress que abra el cliente de correo del usuario, pero sin que los bots de spam capturen tu dirección en texto plano?

La solución más elegante es usar la función nativa antispambot() de WordPress directamente en el menú, mediante un snippet de código en functions.php.

Este método ofusca automáticamente cualquier enlace mailto: que añadas al menú, convirtiendo caracteres en entidades HTML que los bots no leen, pero que los navegadores interpretan perfectamente. No requiere plugins adicionales, JavaScript ni imágenes, y sobrevive actualizaciones si lo pones en un tema hijo.

 

#Pasos para implementarlo

  1. Accede a functions.php: Ve a Apariencia > Editor de temas (o usa FTP en /wp-content/themes/tu-tema/functions.php).
  2. Añade este código al final del archivo (antes del cierre ?> si existe):
text
function ofuscar_email_menu( $atts, $item, $args, $depth ) {
    if ( isset( $atts['href'] ) && preg_match( '/^mailto:/i', $atts['href'] ) ) {
        $email = preg_replace( '/^mailto:(.*)/i', '$1', $atts['href'] );
        $atts['href'] = 'mailto:' . antispambot( $email, 1 );
    }
    return $atts;
}
add_filter( 'nav_menu_link_attributes', 'ofuscar_email_menu', 10, 4 );
  1. Guarda y crea el enlace en el menú:
    • Ve a Apariencia > Menús.
    • Añade un Enlace personalizado.
    • URL: mailto:tudireccion@ejemplo.com
    • Texto del enlace: Contacto
    • Guarda el menú.

 

#Verificación y ventajas

Inspecciona el código fuente de tu sitio (Ctrl+U) y busca el enlace: verás caracteres como tudirección@ejemplo.com, ilegible para bots pero funcional para usuarios.

En el código no aparece la dirección de correo visible

 

Este enfoque es ligero (sin carga extra), compatible con cualquier tema y más seguro que texto plano. Si usas caché, purga tras añadirlo. ¡Problema de spam resuelto!