Cum să modifici emailul implicit de înregistrare? (cu sau fără plugin)
După înregistrarea unui utilizator nou, WordPress trimite un email cu numele de utilizator / parola și un link către pagina de autentificare.
Există vreo modalitate de a modifica acest șablon implicit de email? Aș dori de asemenea să modific subiectul și expeditorul.
Editare: Pentru cei interesați, aici găsiți o soluție bazată pe plugin.

Emailul pentru noul utilizator este trimis folosind funcția wp_new_user_notification()
. Această funcție este "pluggable", ceea ce înseamnă că o puteți suprascrie:
// Redefinirea funcției de notificare a utilizatorului
if ( !function_exists('wp_new_user_notification') ) {
function wp_new_user_notification( $user_id, $plaintext_pass = '' ) {
$user = new WP_User($user_id);
$user_login = stripslashes($user->user_login);
$user_email = stripslashes($user->user_email);
$message = sprintf(__('Înregistrare nouă de utilizator pe blogul tău %s:'), get_option('blogname')) . "\r\n\r\n";
$message .= sprintf(__('Nume de utilizator: %s'), $user_login) . "\r\n\r\n";
$message .= sprintf(__('E-mail: %s'), $user_email) . "\r\n";
@wp_mail(get_option('admin_email'), sprintf(__('[%s] Înregistrare Utilizator Nou'), get_option('blogname')), $message);
if ( empty($plaintext_pass) )
return;
$message = __('Salut,') . "\r\n\r\n";
$message .= sprintf(__("Bine ai venit pe %s! Iată cum te poți autentifica:"), get_option('blogname')) . "\r\n\r\n";
$message .= wp_login_url() . "\r\n";
$message .= sprintf(__('Nume de utilizator: %s'), $user_login) . "\r\n";
$message .= sprintf(__('Parolă: %s'), $plaintext_pass) . "\r\n\r\n";
$message .= sprintf(__('Dacă ai probleme, te rog să mă contactezi la %s.'), get_option('admin_email')) . "\r\n\r\n";
$message .= __('Pa!');
wp_mail($user_email, sprintf(__('[%s] Numele și parola ta de utilizator'), get_option('blogname')), $message);
}
}
Notă: Suprascrierea funcțiilor pluggable nu poate fi făcută în fișierul functions.php al temei. Fișierul pluggable al WP este deja încărcat până în acel moment, așa că funcția ar fi deja definită de WP (adică versiunea implicită). Versiunea ta personalizată trebuie să se încarce înainte ca acest lucru să se întâmple, ceea ce înseamnă că trebuie să o încarci într-un fișier de plugin personalizat.

@Bainternet Nu reușesc să fac acest lucru să funcționeze, am adăugat acest cod în fișierul meu de funcții, dar e-mailul standard continuă să fie trimis. Folosesc multisite, dar nu ar trebui să conteze, nu?

OK, acum am reușit, se pare că funcționează doar ca un plugin separat, nu când îl adaugi în fișierul functions.php
. Acum funcționează perfect, mulțumesc din nou pentru acel cod util!

Funcționează și pentru multisite? Văd că multisite are o grămadă de funcții în ms-functions.php pentru trimiterea de e-mailuri de notificare.

Acest răspuns are câțiva ani. Răspunsul acceptat nu funcționează pentru mine. (Adăugarea lui în functions.php nu face nicio diferență pentru niciunul dintre emailurile trimise când un utilizator nou se înregistrează.) Ar trebui să postez o nouă întrebare?

Până la urmă am găsit un cod care a funcționat pentru mine în acest tutorial: http://www.webtipblog.com/change-wordpress-user-registration-welcome-email/

Pentru a răspunde comentariilor care menționează că nu funcționează în functions.php, motivul este că nu poți încărca o versiune personalizată a unei funcții pluggable atât de târziu. Nu are nicio legătură cu faptul că răspunsul este vechi. Trebuie să definești funcția ta personalizată înainte ca versiunea WP să fie încărcată. Când este încărcată în functions.php, versiunea implicită a pluginului este deja definită. Trebuie să o încarci ca un plugin (nu există nicio diferență între răspunsul dat și linkul postat de Kit, cu excepția pasului suplimentar de a-l încărca ca plugin).

Pentru utilizatorii din 2018 și mai departe:
Începând cu WordPress 4.9.0, există noi filtre pe care le puteți utiliza pentru aceasta (nu mai este nevoie de un plugin):
- wp_new_user_notification_email - personalizați emailul trimis către Utilizator
- wp_new_user_notification_email_admin - personalizați emailul trimis către Administrator
Exemplu de utilizare pentru emailul trimis către Administrator (puteți lipi acest cod în fișierul functions.php al temei dvs.):
add_filter( 'wp_new_user_notification_email_admin', 'custom_wp_new_user_notification_email', 10, 3 );
function custom_wp_new_user_notification_email( $wp_new_user_notification_email, $user, $blogname ) {
$wp_new_user_notification_email['subject'] = sprintf( '[%s] Utilizator nou %s înregistrat.', $blogname, $user->user_login );
$wp_new_user_notification_email['message'] = sprintf( "%s ( %s ) s-a înregistrat pe blogul tău %s.", $user->user_login, $user->user_email, $blogname );
return $wp_new_user_notification_email;
}

Alternativ, se pot folosi filtrele wp_new_user_notification_email
și wp_new_user_notification_email_admin
. Cei interesați pot consulta documentația completă și codul sursă pentru wp_new_user_notification()
.

Mulțumesc Pete, se pare că această funcționalitate a fost introdusă în versiunea 4.9.0 și pare o soluție mai bună.

Salut. Eu folosesc și pluginul WP Approve User.
În acest moment, acesta trimite emailul standard când utilizatorii se înregistrează. Nu ar trebui să facă asta. Ar trebui să spună că contul trebuie mai întâi aprobat.
Pluginul We Approve User are opțiunea de a seta textul pentru când contul a fost aprobat și asta funcționează corect. Problema este la pasul dinaintea aprobării.
Ar trebui să folosesc aceste filtre noi pe care le-ai menționat?

Doar un punct de clarificare bazat pe adăugarea de filtre hook-uri în funcția wp_new_user_notification()
. Acest răspuns se referă în mod specific la suprascrierea funcției wp_new_user_notification()
ca o funcție pluggable. Totuși, aceasta nu se aplică utilizării filtrelor wp_new_user_notification_email
și wp_new_user_notification_email_admin
. Acelea pot fi utilizate în fișierul functions.php (sau într-un plugin specific site-ului).
