Guía para localizar y sustituir enlaces mailto en tu sitio WordPress.
Por qué sustituir enlaces mailto en WordPress
Problemas habituales
Enlaces mailto en WordPress:
- Exponen el correo a bots que rastrean direcciones
- No funcionan bien en iPhone Mail (iOS 26.1)
- Mala experiencia en móvil
- Sin protección anti-spam
- Sin seguimiento ni analíticas
Ubicaciones habituales:
- Plantillas del tema (cabecera, pie)
- Elementos de menú
- Áreas de widgets
- Contenido de páginas y entradas
- Bloques HTML personalizados
- Firmas de correo en biografías de autor
Dónde se esconden los mailto en WordPress
Ubicaciones en el tema
1. Cabecera
header.php- Menús de navegación
- Información de contacto en la barra superior
2. Pie
footer.php- Widgets del pie
- Zona de copyright/contacto
3. Barra lateral
sidebar.php- Áreas de widgets
- Widgets de contacto
4. Plantillas de página
page.php,single.php- Plantilla de página de contacto
- Plantillas personalizadas
Ubicaciones en el contenido
1. Menús de navegación
- Apariencia → Menús
- Menú principal
- Menú del pie
- Menú móvil
2. Widgets
- Apariencia → Widgets
- Widgets de texto
- Widgets HTML
- Widgets personalizados
3. Páginas y entradas
- Página de contacto
- Página "Nosotros"
- Entradas del blog
- Biografías de autor
4. Campos personalizados
- Campos ACF
- Meta boxes
- Campos de contacto personalizados
Dos formas de sustitución
Enfoque 1: Sustitución manual (recomendado al principio)
Adecuado para:
- Sitios pequeños (< 50 páginas)
- Quieres controlar cada sustitución
- Limpieza puntual
Pasos más abajo.
Enfoque 2: Sustitución automática con JavaScript (recomendado para sitios grandes)
Adecuado para:
- Sitios grandes (cientos de páginas)
- Protección continua
- Configurar y olvidar
Ver el fragmento JavaScript más abajo.
Pasos de sustitución manual
Paso 1: Crear tu formulario (5 minutos)
- Regístrate en SupportRetriever
- Completa el onboarding
- Configura tu formulario de contacto
- Obtén la URL del formulario:
https://supportretriever.com/form/your-form-id - Tenla a mano para las sustituciones
Paso 2: Localizar enlaces mailto (10 minutos)
Buscar en la base de datos
Con un plugin de buscar y reemplazar:
- Instala "Better Search Replace" (plugin gratuito)
- Ve a Herramientas → Better Search Replace
- Busca:
mailto: - Selecciona todas las tablas
- No reemplaces aún — solo busca para ver qué tienes
- Revisa los resultados
Buscar en archivos del tema
- Ve a Apariencia → Editaror del tema
- Busca
mailto:en:- header.php
- footer.php
- functions.php
- Archivos de plantilla
Revisar menús
- Ve a Apariencia → Menús
- Revisa cada elemento del menú
- Busca "Enlaces personalizados" con URLs mailto
Revisar widgets
- Ve a Apariencia → Widgets
- Abre cada widget
- Revisa widgets de texto/HTML en busca de mailto
Revisar contenido
- Usa Better Search Replace para buscar en el contenido de entradas
- O la búsqueda de WordPress:
mailto:en entradas/páginas
Paso 3: Sustituir en menús (5 minutos)
Para elementos del menú de navegación:
- Ve a Apariencia → Menús
- Localiza elementos con enlaces mailto
- Haz clic para expandir cada uno
- Sustituye la URL por la URL del formulario:
Antes: mailto:support@example.com
Después: https://supportretriever.com/form/your-form-id?origen=menu
- Actualiza la etiqueta del menú si hace falta:
Antes: support@example.com
Después: Contactar soporte
- Guarda el menú
Paso 4: Sustituir en widgets (5 minutos)
Para áreas de widgets:
- Ve a Apariencia → Widgets
- Abre cada widget de texto/HTML
- Cambia a la pestaña "Texto" (no Visual)
- Busca y reemplaza:
<!-- Antes -->
<a href="mailto:contact@example.com">Contáctanos</a>
<!-- Después -->
<a href="https://supportretriever.com/form/your-form-id?origen=widget">Contáctanos</a>
- Guarda cada widget
Paso 5: Sustituir en archivos del tema (10 minutos)
Para header.php:
- Ve a Apariencia → Editaror del tema
- Abre
header.php - Localiza los enlaces mailto
- Sustituye por la URL del formulario:
<!-- Antes -->
<a href="mailto:<?php echo get_option('admin_email'); ?>">
Contact
</a>
<!-- Después -->
<a href="https://supportretriever.com/form/your-form-id?origen=header">
Contact
</a>
- Guarda el archivo
Para footer.php:
<!-- Antes -->
<p>Correo electrónico: <a href="mailto:info@example.com">info@example.com</a></p>
<!-- Después -->
<p><a href="https://supportretriever.com/form/your-form-id?origen=footer">Contáctanos</a></p>
Nota: Valora crear un tema hijo antes de editar archivos del tema.
Paso 6: Sustituir en contenido (10 minutos)
Con Better Search Replace:
- Ve a Herramientas → Better Search Replace
- Busca:
mailto:support@example.com - Reemplaza por:
https://supportretriever.com/form/your-form-id?origen=content - Selecciona tablas:
wp_posts,wp_postmeta - Ejecuta primero en modo prueba
- Revisa qué se cambiará
- Si está bien, ejecuta de verdad (desmarca "dry run")
- Ejecuta buscar y reemplazar
O edita páginas a mano:
- Editara cada página/entrada con mailto
- Cambia al "Editaror de código" (o pestaña Texto)
- Busca y reemplaza los mailto
- Actualiza cada página
Paso 7: Sustituir en campos personalizados (si aplica)
Si usas ACF o campos personalizados:
- Ve a Entradas/Páginas con esos campos
- Editara cada una
- Actualiza los campos de correo con la URL del formulario
- Guarda los cambios
Método de sustitución automática con JavaScript
Cuándo usarlo
Usa la sustitución automática con JavaScript si:
- Tienes cientos de páginas
- Los mailto están en sitios muy diversos
- Quieres protección continua
- El contenido nuevo puede incluir mailto
- No quieres localizarlos todos a mano
Instalación
Método 1: Pie del tema (el más simple)
- Ve a Apariencia → Editaror del tema
- Abre
footer.php - Añade antes de la etiqueta
</body>:
<script>
(function() {
const FORM_URL = 'https://supportretriever.com/form/your-form-id';
document.querySelectorAll('a[href^="mailto:"]').forEach(link => {
const originalHref = link.getAttribute('href');
const emailMatch = originalHref.match(/mailto:([^?]+)/);
if (emailMatch) {
link.setAttribute('href', FORM_URL + '?origen=autoconvert');
link.setAttribute('data-original-email', emailMatch[1]);
}
});
})();
</script>
- Guarda el archivo
Método 2: Plugin Code Snippets (recomendado)
- Instala el plugin Code Snippets (gratuito)
- Ve a Snippets → Añadir nuevo
- Título: "Sustituir enlaces mailto"
- Pega este código:
add_action('wp_footer', function() {
?>
<script>
(function() {
const FORM_URL = 'https://supportretriever.com/form/your-form-id';
document.querySelectorAll('a[href^="mailto:"]').forEach(link => {
const originalHref = link.getAttribute('href');
const emailMatch = originalHref.match(/mailto:([^?]+)/);
if (emailMatch) {
link.setAttribute('href', FORM_URL + '?origen=autoconvert');
link.setAttribute('data-original-email', emailMatch[1]);
}
});
})();
</script>
<?php
});
- Marca "Solo ejecutar en el frontend"
- Guarda y activa el snippet
Método 3: functions.php
Solo si usas un tema hijo:
- Abre el
functions.phpdel tema hijo - Añade este código:
function replace_mailto_links() {
?>
<script>
(function() {
const FORM_URL = 'https://supportretriever.com/form/your-form-id';
document.querySelectorAll('a[href^="mailto:"]').forEach(link => {
const originalHref = link.getAttribute('href');
const emailMatch = originalHref.match(/mailto:([^?]+)/);
if (emailMatch) {
link.setAttribute('href', FORM_URL + '?origen=autoconvert');
link.setAttribute('data-original-email', emailMatch[1]);
}
});
})();
</script>
<?php
}
add_action('wp_footer', 'replace_mailto_links');
- Guarda el archivo
Probar el método con JavaScript
- Visita tu sitio
- Clic derecho en un antiguo enlace mailto
- Inspeccionar elemento
- Comprueba que
hrefapunta ahora al formulario - Haz clic en el enlace para probar
- Comprueba que se abre el formulario
Por qué existen los "plugins de codificación" (y cuándo es mejor sustituir)
Plugins de codificación/ofuscación de correo
Plugins habituales:
- Correo electrónico Encoder
- Correo electrónico Obfuscator
- Hide My Correo electrónico
Qué hacen:
- Codifican direcciones con JavaScript
- Intentan ocultarlas de los bots
- Mantienen la funcionalidad mailto
Ejemplo de codificación:
// En lugar de: support@example.com
// Pasa a: support@...
Cuándo es mejor codificar
Usa plugins de codificación si:
- DEBES mostrar la dirección real
- Los usuarios necesitan copiar-pegar el correo
- No puedes usar un formulario de contacto
- Tu caso exige que el correo sea visible
Cuándo es mejor sustituir (la mayoría de casos)
Sustituye por el formulario si:
- Quieres máxima protección anti-spam (99 % frente a 30 %)
- Importa la experiencia en móvil (problema iOS 26.1)
- Quieres gestión de conversaciones
- Quieres analíticas
- Quieres una solución a largo plazo
Ventajas de sustituir frente a codificar:
| Característica | Plugin codificación | Sustitución por formulario |
|---|---|---|
| Protección anti-spam | 30-40 % | 99 %+ |
| Fiabilidad en móvil | Baja | Alta |
| Compatible iOS 26.1 | No | Sí |
| Accesibilidad | Media | Alta |
| Experiencia de usuario | Media | Mejor |
| Eficacia a largo plazo | Se degrada | Permanente |
| Gestión de conversaciones | No | Sí |
| Analíticas | No | Sí |
Conclusión: En la mayoría de sitios, sustituir por formularios ofrece mejor protección y experiencia que codificar.
Guía paso a paso (texto)
Ruta de navegación:
Buscar mailto en Menú:
Admin WordPress → Apariencia → Menús →
Selecciona menú → Expande elemento →
Mira el campo URL → Sustituye si contiene "mailto:"
Buscar mailto en Widgets:
Admin WordPress → Apariencia → Widgets →
Clic en widget para expandir → Pestaña Texto →
Busca mailto: en el HTML → Sustituye por URL del formulario
Buscar mailto en el tema:
Admin WordPress → Apariencia → Editaror del tema →
Selecciona header.php o footer.php →
Busca "mailto:" en la página → Sustituye cada caso →
Clic en "Actualizar archivo"
Usar Better Search Replace:
Admin WordPress → Herramientas → Better Search Replace →
Campo "Buscar": mailto:tuemail@example.com →
Campo "Reemplazar por": https://supportretriever.com/form/your-id →
Selecciona tablas: wp_posts →
Marca "Ejecutar en modo prueba" → Clic "Ejecutar buscar/reemplazar" →
Revisa resultados → Desmarca prueba → Ejecuta de nuevo para aplicar
Lista de verificación
Después de sustituir
- Visita la página de inicio — revisa enlaces del pie y cabecera
- Revisa la página de contacto — que no queden mailto
- Revisa los menús de navegación — todos los elementos funcionan
- Revisa los widgets de la barra lateral — los enlaces al formulario funcionan
- Ver código fuente — busca "mailto:" (no debería haber ninguno)
- Prueba en móvil — comprueba que los enlaces abren el formulario
- Prueba en iPhone — comprueba que el arreglo de iOS 26.1 funciona
- Envía un mensaje de prueba — comprueba la entrega
- Revisa la notificación por correo — comprueba que llega
Comandos de prueba
Buscar mailto restantes:
- Ver código fuente de la página (Ctrl+U / Cmd+U)
- Buscar "mailto:" (Ctrl+F / Cmd+F)
- Debería haber: 0 resultados
- Si encuentras alguno, anota la ubicación y sustituye
Probar enlaces al formulario:
- Haz clic en cada enlace de contacto
- Comprueba que se abre el formulario
- Envía un mensaje de prueba
- Comprueba que llega el correo
- Repite en móvil
Solución de problemas
"Sigo viendo enlaces mailto"
Posibles causas:
- Páginas en caché (borra la caché)
- Caché de CDN (borra la CDN)
- Caché del navegador (recarga forzada: Ctrl+Shift+R)
- Ubicaciones que no revisaste (revisa todas las fuentes)
Soluciones:
- Borra todas las cachés
- Usa navegación privada/incógnito
- Revisa de nuevo todas las ubicaciones
"El método con JavaScript no funciona"
Posibles causas:
- Error de JavaScript
- Orden de carga de scripts
- Plugins en conflicto
Depuración:
- Abre la consola del navegador (F12)
- Busca errores
- Comprueba que el script se carga
- Comprueba conflictos con jQuery
Soluciones:
- Envuelve en
jQuery(document).ready() - Carga el script en el pie (no en la cabecera)
- Desactiva plugins uno a uno para localizar el conflicto
"La URL del formulario es incorrecta"
Solución:
- Ve al panel de SupportRetriever
- Entra en Gestión de formularios
- Copia la URL correcta del formulario
- Actualiza todas las instancias
- Borra la caché
WordPress multisitio
Sustitución en toda la red
Si tienes multisitio:
- Usa Better Search Replace en la base de datos de la red
- O ejecuta el script en cada subsitio
- O añade el JavaScript al tema de la red
Consideraciones:
- Cada sitio puede necesitar un formulario distinto
- Usa metadatos para identificar el sitio:
?site=site1 - Valora un formulario central o un formulario por sitio
