Căutați o modalitate de a trimite notificări prin e-mail utilizatorilor WordPress atunci când rolul lor de utilizator se schimbă? Deși probabil există un plugin pentru asta, am creat un fragment de cod rapid pe care îl puteți folosi pentru a trimite notificări prin e-mail membrilor atunci când rolul lor de utilizator s-a schimbat în WordPress.
Instrucțiuni:
Tot ce trebuie să faceți este să adăugați acest cod în fișierul functions.php al temei dvs. sau într-un plugin specific site-ului:
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);
Notă: Dacă este prima dată când adăugați secvențe de cod în WordPress, consultați ghidul nostru despre cum să copiați / lipiți corect secvențe de cod în WordPress, pentru a nu vă defecta accidental site-ul.
Dacă ți-a plăcut acest fragment de cod, te rugăm să iei în considerare și celelalte articole de pe site, cum ar fi: Cele mai bune 62 de teme gratuite pentru bloguri WordPress și Cele mai bune 7 pluginuri pentru formulare de contact WordPress.
cum folosesc etichete HTML aici?
vreau să fac textul îngroșat
$message = “Bună ziua ” .$user_info->display_name . ” rolul tău s-a schimbat pe “.$site_url.”, felicitări, acum ești un ” . $new_role;
Ați putea încerca să folosiți acest cod pentru acea linie:
$message = “Bună ziua ” .$user_info->display_name . ” rolul dvs. s-a schimbat pe “.$site_url.”, felicitări, acum sunteți un ” . $new_role . ““;
Perfect 👍
Mulțumesc mult 👏
Articolul dvs. m-a ajutat, dar trimite și e-mailuri la înregistrările noi. Vreau să folosesc codul dvs. pentru două roluri pentru care vreau mesaje personalizate. Ar funcționa acest cod pentru asta?
Codul ar trebui modificat pentru a verifica valoarea lui
$new_role.Am folosit acest cod, dar nu am primit niciun e-mail când mi-am schimbat rolul
Poate dorești să verifici: https://www.isitwp.com/set-configure-smtp-wordpress/
acesta funcționează și nu trimite e-mail dacă este o înregistrare nouă
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 = “Contul dvs. a fost validat. Puteți acum începe să cumpărați pe 1223.com”;
$message = “bun venit ” .$user_info->display_name . “! mesaj .” ;
wp_mail($to, $subject, $message);
}}
add_action( ‘set_user_role’, ‘user_role_update’, 10, 2);
Acest lucru a fost de mare ajutor! Mulțumesc!
Salut,
1. Mulțumesc pentru fragment – dar vreau să notific utilizatorul doar atunci când rolul unui utilizator existent este modificat.
Acum scriptul trimite un e-mail atunci când un nou utilizator este adăugat în WP.
2. Ar fi mai precis să se trimită numele rolului (acum trimite slug-ul)
Aveți idei?
Mulțumesc
Salut, ai primit fragmentul? dacă este posibil, poți să-mi împărtășești și mie link-ul? pentru că mă confrunt cu aceeași eroare de a nu trimite un e-mail separat
Salut, mulțumesc pentru acel fragment. Ce zici de trimiterea unei notificări atunci când rolul este schimbat la un anumit nume?
De exemplu, vreau să trimit notificarea atunci când rolul utilizatorului este schimbat la ‘group-x’…
Mulțumiri și salutări
M
Mi-a economisit o zi de cercetare!! Mulțumesc mult.
Aveți idee cum să rezolv asta dacă doriți ca e-mailul să fie trimis doar atunci când le schimbați rolul, nu atunci când setați rolul? Cu acest fragment, un e-mail va fi trimis atunci când adăugați un nou utilizator. Un e-mail va fi trimis și atunci când actualizați, de exemplu, prenumele unui utilizator (fără a atinge rolul).
Ați putea încerca să folosiți get_userdata și să verificați dacă rolul curent al utilizatorului este diferit de cel nou…
Strălucit! Mulțumesc!
Mulțumesc Raam, mă bucur să aud că îți place.