Cum să modifici emailul implicit de înregistrare? (cu sau fără plugin)

21 apr. 2011, 13:24:09
Vizualizări: 155K
Voturi: 64

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.

0
Toate răspunsurile la întrebare 3
8
69

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.

21 apr. 2011 16:15:39
Comentarii

@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?

User User
2 iul. 2011 05:33:33

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!

User User
2 iul. 2011 06:03:20

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.

Sisir Sisir
28 iul. 2013 10:42:31

Multisite folosește wpmu_signup_user_notification cred.

Wyck Wyck
25 nov. 2014 23:43:53

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?

Kit Johnson Kit Johnson
21 apr. 2015 14:23:51

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/

Kit Johnson Kit Johnson
24 apr. 2015 09:06:07

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).

butlerblog butlerblog
9 dec. 2019 15:37:49

Nu funcționează în 2021, wp 5.6

trainoasis trainoasis
11 mai 2021 17:16:53
Arată celelalte 3 comentarii
4
39

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):

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;
}
3 ian. 2018 13:54:38
Comentarii

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().

Pete Pete
10 ian. 2018 05:42:22

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

Edu Wass Edu Wass
10 ian. 2018 14:24:25

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?

Andrew Truckle Andrew Truckle
8 dec. 2019 10:32:51

custom_wp_new_user_notification_email nu schimbă conținutul email-ului pentru administrator pe WordPress 5.6

trainoasis trainoasis
11 mai 2021 17:16:00
1

Acest lucru nu va funcționa în functions.php. Trebuie să pui acest cod într-un plugin.

Dacă nu știi cum să creezi un plugin pentru asta, folosește acest link.

Nu uita să iei codul actualizat al acestei funcții de aici.

17 sept. 2015 16:45:29
Comentarii

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).

butlerblog butlerblog
9 dec. 2019 15:24:34