Come modificare l'email predefinita di registrazione? (con o senza plugin)

21 apr 2011, 13:24:09
Visualizzazioni: 155K
Voti: 64

Dopo la registrazione di un nuovo utente, WordPress invia un'email con le credenziali di accesso (login/password) e un link alla pagina di login.

C'è un modo per modificare questo modello di email predefinito? Vorrei anche cambiare l'oggetto e il mittente.

Modifica: Per chi fosse interessato, qui trovate una soluzione tramite plugin.

0
Tutte le risposte alla domanda 3
8
69

L'email per il nuovo utente viene inviata utilizzando la funzione wp_new_user_notification(). Questa funzione è "pluggable", il che significa che puoi sovrascriverla:

// Ridefinisci la funzione di notifica utente
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(__('Nuova registrazione utente sul tuo blog %s:'), get_option('blogname')) . "\r\n\r\n";
        $message .= sprintf(__('Username: %s'), $user_login) . "\r\n\r\n";
        $message .= sprintf(__('E-mail: %s'), $user_email) . "\r\n";

        @wp_mail(get_option('admin_email'), sprintf(__('[%s] Nuova Registrazione Utente'), get_option('blogname')), $message);

        if ( empty($plaintext_pass) )
            return;

        $message  = __('Ciao,') . "\r\n\r\n";
        $message .= sprintf(__("Benvenuto su %s! Ecco come effettuare l'accesso:"), get_option('blogname')) . "\r\n\r\n";
        $message .= wp_login_url() . "\r\n";
        $message .= sprintf(__('Username: %s'), $user_login) . "\r\n";
        $message .= sprintf(__('Password: %s'), $plaintext_pass) . "\r\n\r\n";
        $message .= sprintf(__('Se hai qualsiasi problema, per favore contattami all\'indirizzo %s.'), get_option('admin_email')) . "\r\n\r\n";
        $message .= __('Arrivederci!');

        wp_mail($user_email, sprintf(__('[%s] Il tuo username e password'), get_option('blogname')), $message);

    }
}

Nota: La sovrascrittura delle funzioni pluggable non può essere effettuata nel file functions.php del tema. Il file pluggable di WP è già stato caricato a quel punto, quindi la funzione sarebbe già definita da WP (cioè quella predefinita). La tua versione personalizzata deve essere caricata prima che questo avvenga, il che significa che devi caricarla in un file di plugin personalizzato.

21 apr 2011 16:15:39
Commenti

@Bainternet Non riesco a farlo funzionare, ho aggiunto questo al mio file functions, ma l'email standard continua a essere inviata. Sono su multisite, ma non dovrebbe fare differenza, giusto?

User User
2 lug 2011 05:33:33

OK ora ho capito, sembra funzionare solo come plugin separato, non quando lo aggiungi al tuo file functions.php. Ora funziona perfettamente, grazie ancora per quel bel pezzo di codice!

User User
2 lug 2011 06:03:20

Funziona anche per multisite? Posso vedere che multisite ha un sacco di funzioni dentro ms-functions.php per l'invio delle email di notifica.

Sisir Sisir
28 lug 2013 10:42:31

Penso che Multisite utilizzi wpmu_signup_user_notification.

Wyck Wyck
25 nov 2014 23:43:53

Questa risposta è di diversi anni fa. La risposta accettata non funziona nel mio caso. (Aggiungerla a functions.php non fa alcuna differenza nelle email inviate quando un nuovo utente si registra.) Dovrei pubblicare una nuova domanda?

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

Alla fine ho trovato del codice che ha funzionato per me in questo tutorial: http://www.webtipblog.com/change-wordpress-user-registration-welcome-email/

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

Per rispondere ai commenti riguardanti il fatto che non funziona in functions.php, è perché non puoi caricare una versione personalizzata di una funzione pluggabile così tardi. Non ha nulla a che fare con il fatto che la risposta sia vecchia. Devi definire la tua funzione personalizzata prima che la versione di WP venga caricata. Quando caricata in functions.php, la versione predefinita del plugin è già definita. Devi caricarla come plugin (non c'è differenza tra la risposta data e il link postato da Kit se non il passaggio aggiuntivo di caricarla come plugin).

butlerblog butlerblog
9 dic 2019 15:37:49

Non funziona nel 2021, wp 5.6

trainoasis trainoasis
11 mag 2021 17:16:53
Mostra i restanti 3 commenti
4
39

Per gli utenti dal 2018 in poi:

A partire da WordPress 4.9.0 sono disponibili nuovi filtri che puoi utilizzare per questo (non è più necessario un plugin):

Esempio di utilizzo per l'email inviata all'Amministratore (puoi incollare questo nel file functions.php del tuo tema):

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] Nuovo utente %s registrato.', $blogname, $user->user_login );
    $wp_new_user_notification_email['message'] = sprintf( "%s ( %s ) si è registrato al tuo blog %s.", $user->user_login, $user->user_email, $blogname );
    return $wp_new_user_notification_email;
}
3 gen 2018 13:54:38
Commenti

In alternativa si possono usare i filtri wp_new_user_notification_email e wp_new_user_notification_email_admin. Chi è interessato può consultare la documentazione completa e il codice sorgente per wp_new_user_notification().

Pete Pete
10 gen 2018 05:42:22

Grazie Pete, sembra che sia stato introdotto nella versione 4.9.0 e sembra una soluzione migliore.

Edu Wass Edu Wass
10 gen 2018 14:24:25

Ciao. Anche io sto usando il plugin WP Approve User.

Al momento invia l'email standard quando si registrano. Non dovrebbe. Dovrebbe dire che l'account deve prima essere approvato.

WP Approve User ha l'opzione per impostare il testo quando l'account è stato approvato e quello funziona correttamente. È il passaggio prima dell'approvazione.

Devo usare questi nuovi filtri che hai menzionato?

Andrew Truckle Andrew Truckle
8 dic 2019 10:32:51

custom_wp_new_user_notification_email non modifica il contenuto dell'email per l'amministratore su WordPress 5.6

trainoasis trainoasis
11 mag 2021 17:16:00
1

Questo non funzionerà su functions.php. Devi inserire questo codice all'interno di un plugin.

Se non sai come creare un plugin per questo, usa semplicemente questo link.

Non dimenticare di prendere il codice aggiornato di questa funzione da qui.

17 set 2015 16:45:29
Commenti

Solo un punto di chiarimento basato sull'aggiunta di hook di filtraggio alla funzione wp_new_user_notification(). Questa risposta fa riferimento specificamente all'override di wp_new_user_notification() come funzione pluggable. Tuttavia, questo non si applica all'uso dei filtri wp_new_user_notification_email e wp_new_user_notification_email_admin. Questi possono essere utilizzati nel file functions.php (o in un plugin specifico per il sito).

butlerblog butlerblog
9 dic 2019 15:24:34