¿Estás buscando una forma de enviar notificaciones por correo electrónico a los usuarios de WordPress cuando cambia su rol? Si bien probablemente haya un plugin para esto, hemos creado un fragmento de código rápido que puedes usar para enviar notificaciones por correo electrónico a los miembros cuando su rol ha cambiado en WordPress.
Instrucciones:
Todo lo que tienes que hacer es agregar este código al archivo functions.php de tu tema o a un plugin específico para el sitio:
function user_role_update( $user_id, $new_role ) {
$site_url = get_bloginfo('wpurl');
$user_info = get_userdata( $user_id );
$to = $user_info->user_email;
$subject = "Role changed: ".$site_url."";
$message = "Hello " .$user_info->display_name . " your role has changed on ".$site_url.", congratulations you are now an " . $new_role;
wp_mail($to, $subject, $message);
}
add_action( 'set_user_role', 'user_role_update', 10, 2);
Nota: Si es la primera vez que agregas fragmentos de código en WordPress, consulta nuestra guía sobre cómo copiar y pegar fragmentos de código correctamente en WordPress, para no dañar accidentalmente tu sitio.
Si te gustó este fragmento de código, considera revisar nuestros otros artículos en el sitio como: 62 mejores temas gratuitos de blog para WordPress y 7 mejores plugins de formularios de contacto para WordPress comparados.
¿cómo uso etiquetas HTML aquí?
Quiero poner texto en negrita
$message = "Hola " .$user_info->display_name . " tu rol ha cambiado en " .$site_url . ", felicidades ahora eres un " . $new_role;
Podrías intentar usar este código para esa línea:
$message = “Hola ” .$user_info->display_name . ” tu rol ha cambiado en “.$site_url.”, ¡felicidades ahora eres un ” . $new_role . ““;
Perfecto 👍
Muchas gracias 👏
Tu artículo me ha ayudado, pero también envía correos electrónicos a los nuevos registros. Quiero usar tu código para dos roles para los que quiero mensajes personalizados. ¿Funcionaría este código para eso?
El código necesitaría ser modificado para verificar el valor de
$new_role.Usé este código pero no recibí ningún correo cuando cambié mi rol
Quizás quieras echar un vistazo a: https://www.isitwp.com/set-configure-smtp-wordpress/
este funciona y no envía correo si el nuevo registro
function user_role_update( $user_id, $new_role ) {
if ($new_role == “customer”) {}
elseif ($new_role == “role1″||”role2”) {
$site_url = get_bloginfo(‘wpurl’); $user_info = get_userdata( $user_id ); $to = $user_info->user_email; $subject = “Tu cuenta ha sido validada. Ya puedes empezar a comprar en 1223.com”; $message = “Bienvenido ” .$user_info->display_name . “! mensaje .” ; wp_mail($to, $subject, $message); }}
add_action( ‘set_user_role’, ‘user_role_update’, 10, 2);
¡Esto fue de gran ayuda! ¡Gracias!
Hola,
1. Gracias por el fragmento, pero quiero notificar al usuario solo cuando se cambia el rol de un usuario existente.
Ahora el script envía un correo electrónico cuando se agrega un nuevo usuario a WP.
2. Sería más preciso enviar el nombre del rol (ahora envía el slug)
¿Alguna idea?
Gracias
Hola, ¿recibiste el fragmento? Si es posible, ¿podrías compartirme el enlace también? Porque estoy enfrentando el mismo error de no enviar un correo electrónico separado.
Hola, gracias por ese fragmento. ¿Qué hay de enviar una notificación cuando el rol se cambia a un nombre específico?
Por ejemplo, quiero enviar la notificación cuando el rol del usuario se cambia a 'group-x'...
Gracias y saludos cordiales
M
¡Me ahorró un día de investigación! ¡Muchas gracias.
¿Alguna idea de cómo resolver esto si quieres que el correo electrónico se envíe solo cuando cambias su rol, no cuando estableces el rol? Con este fragmento, se enviará un correo electrónico cuando agregues un nuevo usuario. También se enviará un correo electrónico cuando actualices, por ejemplo, el nombre de pila de un usuario (sin tocar el rol).
Podrías intentar usar get_userdata y verificar si el rol del usuario actual es diferente al nuevo...
¡Brillante! ¡Gracias!
Gracias Raam, me alegra saber que te gusta.