Cuando se registra un nuevo usuario, por defecto WordPress envía un mensaje de activación al usuario y también un correo al administrador del sitio, en este artículo aprenderás cómo modificar estos correos, cambiando el nombre del remitente, correo, asunto e incluso contenido.
Generalidades
Existen diferentes plugins para realizar la personalización de correos que se envían tras el registro de un usuario, sin embargo en este artículo aprenderás cómo realizarlo a través de código.
Personalizar Email Enviado al Usuario
Al final lo que queremos lograr es algo similar a lo que se muestra en la siguiente imagen:

Para esto usaremos el siguiente código:
add_filter( 'wp_new_user_notification_email', 'dcms_new_user_email', 10, 3 );
function dcms_new_user_email( $wp_new_user_email, $user, $blogname ) {
$headers = array('From: Tu Empresa <admin@tuempresa.site>');
$subject = sprintf( 'Te has registrado en [%s].', $blogname );
$wp_new_user_email['headers'] = $headers;
$wp_new_user_email['subject'] = $subject;
return $wp_new_user_email;
}
En el código anterior:
- Utilizamos el Hook wp_new_user_notification_email que hace referencia a la función dcms_new_user_email
- La función acepta tres parámetros, el primero de ellos es un array asociativo que contiene los datos del email a enviarse
- Para este caso sólo cambiaremos las cabeceras y el asunto, por lo tanto definimos dos variables $headers y $subject
- Para cambiar el nombre y correo del remitente usamos la variable $headers, la cual será posteriormente asignado al parámetro del array asociativo
- Al final devolvemos el parámetro $wp_new_user_email modificado
Personalizar Email Enviado al Administrador
Al final lo que queremos lograr es algo similar a la siguiente imagen:

Para esto usaremos el siguiente código:
add_filter( 'wp_new_user_notification_email_admin', 'dcms_admin_new_user_email', 10, 3 );
function dcms_admin_new_user_email( $wp_new_user_email, $user, $blogname ) {
$headers = array('From: Tu Empresa <admin@tuempresa.site>');
$subject = sprintf( '[%s] Nuevo usuario registrado.', $blogname );
$message = sprintf( "%s ( %s ) \n\r ha sido registrado en el sitio %s.",
$user->user_login, $user->user_email, $blogname );
$wp_new_user_email['headers'] = $headers;
$wp_new_user_email['subject'] = $subject;
$wp_new_user_email['message'] = $message;
return $wp_new_user_email;
}
En el código anterior:
- Utilizamos el Hook wp_new_user_notification_email_admin que hace referencia a la función dcms_admin_new_user_email
- La función acepta tres parámetros, el primero de ellos es un array asociativo que contiene los datos del email a enviarse
- Para este caso cambiaremos: las cabeceras, el asunto y el mensaje, por lo tanto definimos tres variables $headers, $subject y $message
- Para cambiar el nombre y correo del remitente usamos la variable $headers, la cual será posteriormente asignado al parámetro del array asociativo
- Al final devolvemos el parámetro $wp_new_user_email modificado
Conclusión
Tal como has visto, a través de los Hooks y algo de código puedes hacer modificaciones al correo enviado cuando se registra un nuevo usuario en tu sitio web WordPress y de esta manera evitar el uso de un plugin adicional.
Hola Jhon, que buen artículo. Me quedan par de dudas:
1.- ¿Cómo se puede agregar también el detalle de la contraseña? De manera que el usuario tengo tanto su Username como la Contraseña que se generó al momento de dar de alta a ese usuario.
2.- ¿Se pueden personalizar otros aspectos del mensaje? Para que por ejemplo antes de los datos de acceso haya un mensaje como: Hola (nombre del usuario) bienvenido a (web) aquí encontrarás todos los datos para acceder a tu perfil. Solo debes hacer clic en el siguiente enlace y entrar con los datos que te enviamos a continuación. Esto lo digo como ejemplo.
De antemano muchísimas gracias por tu tiempo. Y de nuevo, muy buen artículo.
Hola
1- La contraseña no se muestra, se genera un enlace para cambiar la contraseña, esto lo gestiona el propio WordPress por seguridad.
2- Si, puedes cambiar el mensaje como lo desees, debes cambiar la variable $message
Saludos.
hola jhon, siempre son bueno tus artículos. Pero esta vez no me funciono el codigo. No se que sera aun cuando lo hago con plugin tampoco funciona.
Hola, es muy raro, si que debería funcionar, tal vez tienes conflicto con algún otro plugin o con algún código del theme, podrías probarlo en otro sitio y verificar si te sucede lo mismo.
Hola, muchas gracias por la información.
¿Tendrás el código para modificar de la misma forma el correo que recibe el usuario al momento de cambiar su contraseña?
Gracias.
Hola, de momento no, pero tomo nota para revisar y evaluar hacer un artículo sobre eso.
Hola Jhon;
Te comento que gracias a tu tutorial modifique el subject y from de forma exitosa. tambien quise modificar el cuerpo del mensaje pero tengo el problema de que el enlace para restablecer contraseña no me carga correctamente.
Este es el codigo que puse:
Y esta la forma en que llega el mensaje:
Gracias por suscribirte a Webejemplo Aquí los detalles para tu acceso: Correo electrónico: diego102@gmail.com Para crear tu password, visita la siguiente URL: https://webejemplo.com/wp-login.php?action=rp&key=&login=diegoh6
Como se ve en el enlace para crear el password no me carga el key y eso hace que el enlace sea inválido. Sabes por qué el key no carga? Y tambien mi mensaje sale junto sin espacios de lineas.
Hola, parece que te falta definir el valor del $key, prueba agregar:
$key = get_password_reset_key( $user );
Revisa: https://wordpress.stackexchange.com/questions/306642/customize-wp-new-user-notification-email
hola jhon me podria ayudar a mi no me funciono soy novata en esto, me urge hacer esta modificación ,lo estoy haciendo con el plugin y no me funciona .
Prueba colocar el código en el archivo functions.php de tu theme.
hola jhon lo he intentado como tu lo dices y no pasa nada … esta bien como lo hago
add_filter( ‘wp_new_user_notification_email’, ‘dcms_new_user_email’, 10, 3 );
function dcms_new_user_email( $wp_new_user_email, $user, $blogname ) {
$headers = array(‘From: jessy ‘);
$subject = sprintf( ‘Te has registrado en [%s].’, $blogname );
$wp_new_user_email[‘headers’] = $headers;
$wp_new_user_email[‘subject’] = $subject;
return $wp_new_user_email;
}
un abrazo , agradezco tu respuesta
o disculpa jhon, yo lo necesito es para que especialmente el usuario recupere la contraseña, cuando llegue a su correo no salga el nombre de wordprees , la variable es la misma ? disculpa las molestias yo soy nueva en esto agradezco que me ayudaras con el codigo en caso tal que la variable no sea la misma .
hola ya pude realizar el cambio, pero, con otro plugin wp welcome editor email . un abrazo.
Esta genial el Post.
Ahora me gustaria agregar una imagen en el cuerpo del mesaje. El logotipo de mi empresa. y no consigo hacerlo.
Siempre que intento incluir un código me lo pinta tal cual ya sea una <img src="… o un div o lo que sea…
Muchas gracias de ante mano,
saludos,
Sergio
Hola, revisa el siguiente enlace: https://stackoverflow.com/questions/15646187/display-inline-image-attachments-with-wp-mail
Hola Jhon, gracias por el artículo.
En mi caso, el mail que se envía automáticamente contiene:
– nombre de usuario
– contraseña
– url que lleva a la validación en wordpress.
ME gustaría que:
1) no se enviara la contraseña (me parece poco seguro), sino un enlace para introducirla por primera vez o reestablecerla.
2) la url llevase a mi home y no a wordpress. De esta manera se da más sensación de unidad.
¿Alguna ayuda para poder hacerlo?
Gracias!
Hola, implica más código, podrías evaluar usar un plugin, revisa por ejemplo: https://es.wordpress.org/plugins/emails-verification-for-woocommerce/
Gracias, pero utilizo EDD. ¿Es lo mismo?
Hola, no lo he probado con EDD, pero el registro es parte del core de WP, pruébalo y me comentas.
Hola John,
Una pregunta se podría hacer un mail de alta diferente por Rol de usuario, con textos persolizados en el mail para cada tipo de rol de usuario.
Un saludo
Hola, pero el alta siempre va a un rol específico, a menos que lo designes tu desde el backend o al menos que el usuario al registrase tenga la opción de seleccionar el rol. Si hay roles diferentes en el registro si que podría detectarse.
Saludos estoy usando wp_new_user_notification_email, pero quiero que invoque la plantilla WC_Email_Customer_New_Account de woocomerce, como puedo hacer esto gracias.
En ese caso creo que mejor estiliza el correo de WooCommerce que es el que se usará si lo tienes instalado.
Hola! podria ayudarme a obtener el tipo de rol de usuario que estoy creando? para enviarle un mensaje especial a ese rol al crearlo como usuario? por ejemplo que a los de rol “editor” les llegue cierto correo. En mi caso tengo Roles personalizados de los que yo conozco el nombre. gracias!!!
Hola, hay un plugin que podría ayudarte, revisa: https://wordpress.org/plugins/bnfw/ , sin embargo evaluaré hacer un futuro artículo sobre esto que comentas.
Hola, tengo un problema, y es que quiero modificar el EMAIL de activación luego de que el usuario haya sido aprobado automáticamente. Utilice tu código y no me funcionó, me sigue apariendo lo mismo, pero tiene como Asunto [Nombre de mi empresa] Account Actived. Quise ver si había un hook para personalizar ese email de activación y no encuentro nada. El registro del usuario es a través de un formulario que realicé con Forminator.
Hola, es posible que sean otros Hooks, evaluaré hacer un artículo sobre eso. Saludos.
Hola, como se puede cambiar la url del enlace que se le envía al usuario cuando se registra para que no sea la misma que usa el admin para iniciar sesión?
Hola, y a donde lo enviarías?, si tienes WooCommerce o algún plugin de gestión de usuarios, como plugins de membresías, entonces ya te solucionan esto.