Come modificare l'email predefinita di registrazione? (con o senza plugin)
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.

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.

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

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!

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

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?

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

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

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):
- wp_new_user_notification_email - personalizza l'email inviata all'Utente
- wp_new_user_notification_email_admin - personalizza l'email inviata all'Amministratore
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;
}

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

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

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?

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