Si un nouvel utilisateur s’inscrit sur un site WordPress, le nouvel utilisateur et l’administrateur reçoivent des e-mails de notification :
Utilisateur:
À partir de: monBlog (info@myBlog.com)
Sujet: [myBlog] Vos informations de nom d’utilisateur et de mot de passeNom d’utilisateur : nouvel_utilisateur
Pour définir votre mot de passe, rendez-vous à l’adresse suivante :
Administrateur :
À partir de: monBlog (info@myBlog.com)
Sujet: [myBlog] Enregistrement d’un nouvel utilisateurInscription d’un nouvel utilisateur sur votre site myBlog :
Nom d’utilisateur : nouvel_utilisateur
E-mail: nouvel_utilisateur@monblog.com
Jusqu’à la version 4.8, le contenu du courrier était codé en dur. Le seul moyen de modifier les courriers était de se connecter à wp_mail() ou même phpmailer.
WordPress v4.9 offre désormais la possibilité de personnaliser facilement ces mails en utilisant les filtres suivants :
Les filtres se déclenchent une fois que l’utilisateur a été ajouté à la base de données.
Les filtres pour l’email de l’utilisateur et de l’administrateur suivent la même logique, seuls le filtre et les noms des variables diffèrent :
$wp_new_user_notification_email_admin = apply_filters( 'wp_new_user_notification_email_admin', $wp_new_user_notification_email_admin, $user, $blogname )
Les paramètres contiennent les valeurs suivantes :
- $wp_new_user_notification_email_admin : Tableau associatif avec les clés de, sujet, message, en-têtes.
- $user : Un objet WP_User de l’utilisateur enregistré.
- $blogname : une chaîne contenant le nom du blog auquel l’utilisateur s’est enregistré.
Avec ces valeurs à portée de main, il est facile de créer votre courrier personnalisé :
add_action( 'login_init', 'my_wp_new_user_notification_email_admin_init' );
function my_wp_new_user_notification_email_admin_init() {
add_filter( 'wp_new_user_notification_email_admin', 'my_wp_new_user_notification_email_admin', 10, 3 );
}
function my_wp_new_user_notification_email_admin( $wp_new_user_notification_email, $user, $blogname ) {
$wp_new_user_notification_email['subject'] = sprintf( '[%s] New user %s registered.', $blogname, $user->user_login );
$wp_new_user_notification_email['message'] = sprintf( "%s ( %s ) has registerd to your blog %s.", $user->user_login, $user->user_email, $blogname );
return $wp_new_user_notification_email;
}
(Comme toujours pour les filtres : n’oubliez pas de retourner la variable modifiée.) Le courrier ressemble maintenant à ceci :
À partir de: monBlog (MonBlog@monblog.com)
Sujet: [myBlog] Nouvel utilisateur new_user enregistré.new_user (new_user@user.com) s’est inscrit sur votre blog myBlog.
Bien entendu, vous pouvez insérer plus de données que celles fournies par le filtre. Par exemple, vous pouvez dire à l’administrateur combien d’utilisateurs enregistrés le blog a déjà :
function my_wp_new_user_notification_email_admin($wp_new_user_notification_email, $user, $blogname) {
$user_count = count_users();
$wp_new_user_notification_email['subject'] = sprintf('[%s] New user %s registered.',
$blogname, $user->user_login);
$wp_new_user_notification_email['message'] =
sprintf( "%s has registerd to your blog %s.", $user->user_login, $blogname) .
"nnr" . sprintf("This is your %d. user!", $user_count['total_users']);
return $wp_new_user_notification_email;
}
Le paramètre en-têtes peut être utilisé pour modifier facilement certaines informations d’en-tête :
$wp_new_user_notification_email['headers'] = "From: myBlog <myblog@myblog.com> nr cc: Admin 2 <admin2@mblog.com>";
Dans cet exemple le À partir de les informations du courrier sont modifiées et l’utilisateur admin2@monblog est ajouté en tant que destinataire supplémentaire. Comme vous pouvez le voir, plusieurs entrées d’en-tête sont séparées par « nr » (retour et saut de ligne).
Comme dit précédemment, tout peut déjà être fait en utilisant wp_mail() et phpmailer, mais les nouveaux filtres sont bien plus pratiques.
— to wpengineer.com