WordPress Hosting

desactivar emails wordpress

Cómo desactivar y personalizar todos los emails que envía WordPress – Guía completa recopilada de toda la documentación oficial y no oficial

WordPress envía correos electrónicos automáticos en multitud de situaciones: cuando alguien se registra, cambia su contraseña, deja un comentario, se actualiza el núcleo… A veces es útil, pero otras puede resultar abrumador o simplemente innecesario.

En esta guía te muestro todas las formas de controlar estos emails de WordPress: desactivarlos por completo, filtrar algunos específicos o personalizarlos a tu gusto. Todo con código, sin depender de plugins (aunque al final te comparto un par por si prefieres la vía rápida).

Índice de contenidos

Filtros y acciones globales de wp_mail()

Todos los emails de WordPress pasan por la función wp_mail(). Esto significa que puedes interceptar cualquier correo usando estos filtros y acciones:

Filtros principales:

  • wp_mail — Filtra todos los argumentos del email (destinatario, asunto, mensaje, cabeceras, adjuntos).
  • pre_wp_mail — Permite cancelar el envío devolviendo false.
  • wp_mail_from — Cambia la dirección del remitente.
  • wp_mail_from_name — Cambia el nombre del remitente.
  • wp_mail_content_type — Define el tipo de contenido (text/plain o text/html).
  • wp_mail_charset — Establece la codificación de caracteres.

Acciones:

  • phpmailer_init — Acceso directo al objeto PHPMailer antes del envío.
  • wp_mail_succeeded — Se ejecuta cuando el email se envía correctamente.
  • wp_mail_failed — Se ejecuta cuando falla el envío (útil para depuración).

Desactivar todos los emails de WordPress

Si necesitas bloquear absolutamente todos los correos (típico en entornos de desarrollo o staging) tienes varias opciones:

Opción 1: filtro pre_wp_mail

La forma más limpia y recomendada. Añade esto a tu archivo functions.php o en un plugin personalizado:

add_filter( 'pre_wp_mail', '__return_false' );

Este filtro intercepta wp_mail() antes de que haga nada, devolviendo false para cancelar el envío.

Opción 2: función personalizada más elaborada

Si quieres registrar los intentos de envío aunque no se manden:

add_filter( 'pre_wp_mail', 'ayudawp_desactivar_emails' );
function ayudawp_desactivar_emails( $return ) {
    // Opcional: registrar en el log
    error_log( 'Email bloqueado por ayudawp_desactivar_emails' );
    return false;
}

Opción 3: sobrescribir wp_mail()

La función wp_mail() es pluggable, lo que significa que puedes redefinirla completamente. Crea un mu-plugin en /wp-content/mu-plugins/desactivar-emails.php:

<?php
if ( ! function_exists( 'wp_mail' ) ) {
    function wp_mail( $to, $subject, $message, $headers = '', $attachments = array() ) {
        // No hace nada, solo devuelve true para simular que funciona bien
        return true;
    }
}

Importante: Los mu-plugins se cargan antes que los plugins normales, por lo que esta técnica garantiza que tu versión de wp_mail() prevalezca.

Emails de comentarios

WordPress envía dos tipos de emails relacionados con comentarios.

Comentario pendiente de moderación

Función: wp_notify_moderator() (pluggable)

Filtros para personalizar:

  • comment_moderation_recipients
  • comment_moderation_subject
  • comment_moderation_text
  • comment_moderation_headers

Para desactivarlo:

// Opción 1: filtro directo
add_filter( 'notify_moderator', '__return_false' );

// Opción 2: eliminar la acción del hook
remove_action( 'comment_post', 'wp_new_comment_notify_moderator' );

También puedes desactivarlo desde Ajustes → Comentarios desmarcando la opción correspondiente, si es solo para ti, y de este modo te evitas un código adicional.

Comentario publicado (notificación al autor)

Función: wp_notify_postauthor() (pluggable)

Filtros para personalizarlo:

  • comment_notification_recipients
  • comment_notification_subject
  • comment_notification_text
  • comment_notification_headers

Para desactivarlo:

// Opción 1: filtro directo
add_filter( 'notify_post_author', '__return_false' );

// Opción 2: eliminar la acción
remove_action( 'comment_post', 'wp_new_comment_notify_postauthor' );

Emails de usuarios y contraseñas

Nuevo usuario creado (email al administrador)

Este correo electrónico – salvo en instalaciones muy nuevas o situaciones de especial control – casi siempre sobra.

Filtros:

  • wp_new_user_notification_email_admin
  • wp_send_new_user_notification_to_admin

Para desactivarlo:

add_filter( 'wp_send_new_user_notification_to_admin', '__return_false' );

Nuevo usuario creado (email al usuario)

Este es un correo que (creo) que casi nunca deberías desactivar, pero si lo necesitas aquí lo tienes.

Filtros:

  • wp_new_user_notification_email
  • wp_send_new_user_notification_to_user

Para desactivarlo:

add_filter( 'wp_send_new_user_notification_to_user', '__return_false' );

Desactivar ambas notificaciones de nuevo usuario

// Eliminar la función que dispara ambos emails
remove_action( 'register_new_user', 'wp_send_new_user_notifications' );
remove_action( 'edit_user_created_user', 'wp_send_new_user_notifications' );

Solicitud de restablecimiento de contraseña

Este es otro email que solo debes desactivar en situaciones muy particulares.

Filtros:

  • retrieve_password_title
  • retrieve_password_message
  • retrieve_password_notification_email

Para desactivarlo:

// Opción 1
add_filter( 'send_retrieve_password_email', '__return_false' );

// Opción 2: devolver mensaje vacío
add_filter( 'retrieve_password_message', '__return_empty_string' );

Contraseña restablecida (notificación al admin)

Email que SIEMPRE sobra, de nuevo en mi humilde opinión.

Función: wp_password_change_notification() (pluggable)

Filtro: wp_password_change_notification_email

Para desactivarlo:

remove_action( 'after_password_reset', 'wp_password_change_notification' );

Usuario cambia su contraseña (notificación al usuario)

Filtro: password_change_email

Para desactivarlo:

add_filter( 'send_password_change_email', '__return_false' );

Usuario intenta cambiar su email

Filtro: new_user_email_content

Para desactivarlo:

remove_action( 'personal_options_update', 'send_confirmation_on_profile_email' );

Usuario confirma cambio de email

Filtro: email_change_email

Para desactivarlo:

add_filter( 'send_email_change_email', '__return_false' );

Emails de cambio de email del administrador

Mi consejo, por seguridad, es que nunca desactives estos emails, pero tú decides

Intento de cambiar email de administración del sitio

Filtros:

  • new_admin_email_subject
  • new_admin_email_content

Para desactivarlo:

remove_action( 'add_option_new_admin_email', 'update_option_new_admin_email' );
remove_action( 'update_option_new_admin_email', 'update_option_new_admin_email' );

Email de administración del sitio cambiado

Filtro: site_admin_email_change_email

Para desactivarlo:

add_filter( 'send_site_admin_email_change_email', '__return_false' );

Emails de actualizaciones automáticas

Actualizaciones automáticas de WordPress

Filtro: auto_core_update_email

Para desactivarlo:

// Desactiva el email de actualizaciones correctas del núcleo de WordPress
add_filter( 'auto_core_update_send_email', '__return_false' );

// O más selectivo (solo cuando va bien, no cuando falla)
add_filter( 'auto_core_update_send_email', 'ayudawp_filtrar_email_core', 10, 4 );
function ayudawp_filtrar_email_core( $send, $type, $core_update, $result ) {
    if ( ! empty( $type ) && $type === 'success' ) {
        return false; // No enviar si fue bien
    }
    return true; // Sí enviarlo si falló
}

Actualizaciones automáticas de plugins

Filtro: auto_plugin_theme_update_email

Para desactivarlo:

add_filter( 'auto_plugin_update_send_email', '__return_false' );

Actualizaciones automáticas de temas

Para desactivarlo:

add_filter( 'auto_theme_update_send_email', '__return_false' );

Desactivar todos los emails de actualizaciones automáticas

// WordPress
add_filter( 'auto_core_update_send_email', '__return_false' );

// Plugins
add_filter( 'auto_plugin_update_send_email', '__return_false' );

// Temas
add_filter( 'auto_theme_update_send_email', '__return_false' );

Email de depuración de actualizaciones

Solo se envía en versiones de desarrollo de WordPress:

add_filter( 'automatic_updates_send_debug_email', '__return_false' );

Emails de errores fatales y modo recuperación

Cuando ocurre un error fatal en un plugin o tema, WordPress envía un email con información de diagnóstico.

Filtros:

  • wp_fatal_error_handler_enabled
  • recovery_email_support_info
  • recovery_email_debug_info
  • recovery_mode_email

Para desactivar completamente el handler de errores fatales:

// En wp-config.php (ANTES de "That's all, stop editing!")
define( 'WP_DISABLE_FATAL_ERROR_HANDLER', true );

Nota importante: El filtro wp_fatal_error_handler_enabled no puede usarse desde plugins porque se ejecuta demasiado pronto. Solo funciona definiendo la constante en wp-config.php como tienes aquí.

Para cambiar el destinatario del email de recuperación:

// En wp-config.php
define( 'RECOVERY_MODE_EMAIL', 'tu-email@tudominio.com' );

Emails de solicitudes de datos personales (RGPD)

Solicitud de exportación o borrado de datos

Filtros:

  • user_request_action_email_subject
  • user_request_action_email_content
  • user_request_action_email_headers

Usuario confirma la solicitud

Filtros:

  • user_request_confirmed_email_to
  • user_request_confirmed_email_subject
  • user_request_confirmed_email_content
  • user_request_confirmed_email_headers

Para desactivarlo:

remove_action( 'user_request_action_confirmed', '_wp_privacy_send_request_confirmation_notification' );

Email con enlace de exportación de datos

Filtros:

  • wp_privacy_personal_data_email_to
  • wp_privacy_personal_data_email_subject
  • wp_privacy_personal_data_email_content
  • wp_privacy_personal_data_email_headers

Para desactivarlo:

remove_action( 'wp_privacy_personal_data_export_page', 'wp_privacy_send_personal_data_export_email' );

Notificación de borrado de datos completado

Filtros:

  • user_erasure_fulfillment_email_to
  • user_erasure_fulfillment_email_subject
  • user_erasure_fulfillment_email_content
  • user_erasure_fulfillment_email_headers

Para desactivarlo:

remove_action( 'wp_privacy_personal_data_erased', '_wp_privacy_send_erasure_fulfillment_notification' );

Personalizar el remitente de todos los emails

Por defecto, WordPress envía los emails desde wordpress@tudominio.com, pero hay muchas situaciones en las que querrás cambiarlo, no solo estéticas. A mi por ejemplo me corrigió un problema de montones de emails que se iban a spam o directamente los bloqueaban servicios como GMail.

Puedes cambiarlo así:

// Cambiar dirección del remitente por defecto de WordPress
add_filter( 'wp_mail_from', 'ayudawp_cambiar_email_remitente' );
function ayudawp_cambiar_email_remitente( $email ) {
    return 'otroemail@tudominio.com';
}

// Cambiar nombre del remitente por defecto de WordPress
add_filter( 'wp_mail_from_name', 'ayudawp_cambiar_nombre_remitente' );
function ayudawp_cambiar_nombre_remitente( $nombre ) {
    return 'Nombre de mi web';
}

Enviar emails en formato HTML

Por defecto WordPress envía emails en texto plano, pero puedes cambiar a HTML:

add_filter( 'wp_mail_content_type', 'ayudawp_email_html' );
function ayudawp_email_html( $content_type ) {
    return 'text/html';
}

Cuidado: Este filtro afecta a todos los emails. Si solo quieres enviar algunos en HTML, recuerda quitar el filtro después de usarlo o aplicarlo selectivamente.

Registrar errores de envío de email

Muy útil para depurar problemas, y te evitas instalar un plugin solo para esto:

/* Depuración de errores en envío de emails de WordPress */ 
add_action( 'wp_mail_failed', 'ayudawp_registrar_error_email' );
function ayudawp_registrar_error_email( $wp_error ) {
    $mensaje = 'Error de email: ' . $wp_error->get_error_message();
    error_log( $mensaje );
}

Configurar SMTP sin plugins

Seguro que más de una vez has instalado un plugin para usar SMTP y así mejorar la entrega de emails, o incluso conseguir que lleguen. Pues bien, no hace falta, puedes configurarlo por tu cuenta, sin plugins, con código totalmente nativo, sin depender de actualizaciones de plugins o funcionamientos extraños:

En wp-config.php:

define( 'SMTP_HOST', 'smtp.tuservidor.com' );
define( 'SMTP_PORT', 587 );
define( 'SMTP_USER', 'usuario@tudominio.com' );
define( 'SMTP_PASS', 'tu-contraseña' );
define( 'SMTP_SECURE', 'tls' ); // 'ssl' o 'tls'
define( 'SMTP_FROM', 'noreply@tudominio.com' );
define( 'SMTP_NAME', 'Nombre de mi web' );

En functions.php o un plugin:

/* Enviar emails de WordPress usando SMTP */
add_action( 'phpmailer_init', 'ayudawp_configurar_smtp' );
function ayudawp_configurar_smtp( $phpmailer ) {
    $phpmailer->isSMTP();
    $phpmailer->Host       = SMTP_HOST;
    $phpmailer->SMTPAuth   = true;
    $phpmailer->Port       = SMTP_PORT;
    $phpmailer->Username   = SMTP_USER;
    $phpmailer->Password   = SMTP_PASS;
    $phpmailer->SMTPSecure = SMTP_SECURE;
    $phpmailer->From       = SMTP_FROM;
    $phpmailer->FromName   = SMTP_NAME;
}

Emails específicos de multisitio

Si gestionas una red WordPress multisitio hay emails adicionales que puedes controlar.

Notificación de nuevo sitio creado

Filtro: new_site_email

Para desactivarlo:

add_filter( 'send_new_site_email', '__return_false' );

Email de bienvenida a nuevo usuario

Filtros:

  • update_welcome_user_subject
  • update_welcome_user_email

Para desactivarlo:

add_filter( 'wpmu_welcome_user_notification', '__return_false' );

Email de bienvenida a nuevo sitio

Filtros:

  • update_welcome_subject
  • update_welcome_email

Para desactivarlo:

add_filter( 'wpmu_welcome_notification', '__return_false' );

Notificación de registro de nuevo blog

Filtros:

  • wpmu_signup_blog_notification_subject
  • wpmu_signup_blog_notification_email

Para desactivarlo:

add_filter( 'wpmu_signup_blog_notification', '__return_false' );

Notificación de registro de nuevo usuario

Filtros:

  • wpmu_signup_user_notification_subject
  • wpmu_signup_user_notification_email

Para desactivarlo:

add_filter( 'wpmu_signup_user_notification', '__return_false' );

Cambio de email de administrador de red

Filtros:

  • new_network_admin_email_content
  • network_admin_email_change_email

Para desactivar la notificación de cambio:

add_filter( 'send_network_admin_email_change_email', '__return_false' );

Código completo para desactivar emails selectivamente

Aquí tienes un codiguito, un snippet, que puedes adaptar a tus necesidades, aprovechando mucho de lo visto antes:

/**
 * Desactivar emails selectivamente en WordPress
 * Añadir en functions.php o mejor en un mu-plugin
 */

// === COMENTARIOS ===
// add_filter( 'notify_moderator', '__return_false' );
// add_filter( 'notify_post_author', '__return_false' );

// === USUARIOS ===
// add_filter( 'wp_send_new_user_notification_to_admin', '__return_false' );
// add_filter( 'wp_send_new_user_notification_to_user', '__return_false' );
// add_filter( 'send_password_change_email', '__return_false' );
// add_filter( 'send_email_change_email', '__return_false' );

// === CONTRASEÑAS ===
// add_filter( 'send_retrieve_password_email', '__return_false' );
// remove_action( 'after_password_reset', 'wp_password_change_notification' );

// === ACTUALIZACIONES AUTOMÁTICAS ===
add_filter( 'auto_core_update_send_email', '__return_false' );
add_filter( 'auto_plugin_update_send_email', '__return_false' );
add_filter( 'auto_theme_update_send_email', '__return_false' );

// === CAMBIO DE EMAIL ADMIN ===
// add_filter( 'send_site_admin_email_change_email', '__return_false' );

Descomenta (quita los //) las líneas que necesites según tu situación.

Resumen de filtros y acciones

Para desactivar emails devolviendo false:

  • pre_wp_mail — Todos los emails.
  • notify_moderator — Moderación de comentarios.
  • notify_post_author — Notificación al autor de la publicación.
  • wp_send_new_user_notification_to_admin — Nuevo usuario (al admin).
  • wp_send_new_user_notification_to_user — Nuevo usuario (al usuario).
  • send_password_change_email — Cambio de contraseña.
  • send_email_change_email — Cambio de email.
  • send_retrieve_password_email — Solicitud de nueva contraseña.
  • auto_core_update_send_email — Actualizaciones del núcleo.
  • auto_plugin_update_send_email — Actualizaciones de plugins.
  • auto_theme_update_send_email — Actualizaciones de temas.
  • send_site_admin_email_change_email — Cambio email admin sitio.
  • send_network_admin_email_change_email — Cambio email admin red.
  • send_new_site_email — Nuevo sitio (multisitio).
  • wpmu_welcome_notification — Bienvenida sitio (multisitio).
  • wpmu_welcome_user_notification — Bienvenida usuario (multisitio).
  • wpmu_signup_blog_notification — Registro blog (multisitio).
  • wpmu_signup_user_notification — Registro usuario (multisitio).

Constantes útiles en wp-config.php:

  • WP_DISABLE_FATAL_ERROR_HANDLER — Desactiva emails de errores fatales.
  • RECOVERY_MODE_EMAIL — Destinatario de emails de modo recuperación.
  • AUTOMATIC_UPDATER_DISABLED — Desactiva actualizaciones automáticas (y sus emails).

Funciones pluggable que puedes sobreescribir:

  • wp_mail()
  • wp_notify_moderator()
  • wp_notify_postauthor()
  • wp_password_change_notification()
  • wp_new_user_notification()
  • wp_new_blog_notification()

Alternativa: plugins

Si prefieres no tocar código estos dos plugins te permiten gestionar los emails de WordPress desde una interfaz gráfica.

Disable Emails

Disable Emails es perfecto para entornos de desarrollo o staging. Desactiva completamente el envío de emails reemplazando la función wp_mail() por una versión que no hace nada.

Características:

  • Bloquea todos los emails con un clic.
  • Opción de activar como mu-plugin para que siempre esté activo.
  • Los hooks y filtros siguen funcionando, solo no se envía nada.
  • Compatible con plugins de registro de emails para ver qué se habría enviado.

Manage Notification E-mails

Manage Notification E-mails te permite activar o desactivar emails específicos desde sus ajustes.

Características:

  • Control por separado de cada tipo de notificación.
  • Gestión de emails de nuevos usuarios, cambios de contraseña, actualizaciones automáticas…
  • Compatible con multisitio.
  • Exportación e importación de ajustes.
  • Los emails de actualizaciones fallidas siempre se envían (por seguridad).

Pues ya estaría ¿no?

Con esta información tienes todo lo necesario para tomar el control total de los emails que envía tu WordPress sin tener que andar buscando en veinte sitios y documentaciones dispersas, ese trabajo ya lo he hecho yo por ti.

Ahora te toca elegir la estrategia que mejor se adapte a tu situación, o usar un código personalizado para tener el control total, sabiendo que siempre estarás usando códigos nativos de WordPress, o plugins si prefieres una solución visual y rápida, pero usando técnicas que se salen de las nativas de WordPress.

Compartir en redes
Resumir con IA

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en las estrellas para valorarlo!

Promedio de puntuación 5 / 5. Total de votos: 7

¡Todavía no hay votos! Sé el primero en valorar este contenido.

Ya que has encontrado útil este contenido...

¡Sígueme en las redes sociales!

¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!



Sobre el autor

Scroll al inicio