Thème : Mail | Niveau : intermédiaire
Objectifs pédagogiques
- Personnaliser l’expéditeur, l’objet et le contenu des e-mails natifs de WordPress
- Passer ces e-mails en HTML pour une mise en forme simple
- Savoir où placer ce code dans un thème enfant
Cette astuce porte sur les e-mails natifs WordPress (nouvel utilisateur, réinitialisation de mot de passe). Les e-mails WooCommerce, qui disposent de leurs propres réglages de personnalisation, sont traités dans une astuce dédiée.
Deux niveaux de personnalisation
- Sans code : l’adresse et le nom de l’expéditeur sont déjà réglables dans FluentSMTP (
Réglages de l'expéditeur, voir l’astuce “Configurer l’envoi d’emails via SMTP”). C’est suffisant si vous ne touchez pas au contenu des messages. - Avec code : pour modifier l’objet ou le corps d’un e-mail natif, WordPress ne propose pas de réglage dans l’interface. Il faut passer par des filtres PHP, à placer dans le thème enfant.
Où placer le code
Sur un thème FSE comme Twenty Twenty-Five, l’éditeur de fichiers de thème se trouve dans Outils → Éditeur de fichiers de thème. Ouvrez le fichier functions.php de votre thème enfant.

Instructions étape par étape
1. Personnaliser l’expéditeur (optionnel si déjà réglé dans FluentSMTP)
add_filter( 'wp_mail_from', function ( $email ) {
return 'contact@mon-site.fr';
} );
add_filter( 'wp_mail_from_name', function ( $name ) {
return 'Mon Site';
} );
2. Passer les e-mails en HTML
Ce filtre s’applique à tous les e-mails du site, pas seulement à ceux que vous personnalisez ici. Il permet de recevoir vos emails mis en forme dans votre boîte mail.
add_filter( 'wp_mail_content_type', function () {
return 'text/html';
} );
3. Personnaliser le mail de bienvenue (nouvel utilisateur)
add_filter( 'wp_new_user_notification_email', function ( $email, $user, $blogname ) {
$email['subject'] = sprintf( 'Bienvenue sur %s', $blogname );
$message = '<p>Bonjour ' . esc_html( $user->display_name ) . ',</p>';
$message .= '<p>Votre compte a été créé sur <strong>' . esc_html( $blogname ) . '</strong>.</p>';
$message .= '<p>Pour définir votre mot de passe, cliquez sur le lien reçu dans un second e-mail.</p>';
$email['message'] = $message;
return $email;
}, 10, 3 );
4. Personnaliser le mail de réinitialisation de mot de passe
add_filter( 'retrieve_password_title', function ( $title ) {
return 'Réinitialisation de votre mot de passe';
} );
add_filter( 'retrieve_password_message', function ( $message, $key, $user_login ) {
$reset_url = network_site_url( "wp-login.php?action=rp&key=$key&login=" . rawurlencode( $user_login ), 'login' );
$html = '<p>Bonjour,</p>';
$html .= '<p>Une demande de réinitialisation de mot de passe a été effectuée pour le compte <strong>' . esc_html( $user_login ) . '</strong>.</p>';
$html .= '<p><a href="' . esc_url( $reset_url ) . '">Cliquez ici pour choisir un nouveau mot de passe</a></p>';
$html .= '<p>Si vous n\'êtes pas à l\'origine de cette demande, ignorez cet e-mail.</p>';
return $html;
}, 10, 3 );

5. Enregistrer et tester
Cliquez sur Mettre à jour le fichier, puis créez un utilisateur de test ou demandez une réinitialisation de mot de passe pour vérifier le résultat.

Tableau récapitulatif
| Filtre | Rôle |
|---|---|
wp_mail_from / wp_mail_from_name | Adresse et nom de l’expéditeur |
wp_mail_content_type | Passe l’e-mail en HTML (affecte tous les e-mails du site) |
wp_new_user_notification_email | Objet et corps du mail de bienvenue |
retrieve_password_title / retrieve_password_message | Objet et corps du mail de réinitialisation de mot de passe |
Ce qu’il faut retenir
- WordPress ne propose aucun réglage dans l’interface pour modifier le contenu de ses e-mails natifs : il faut passer par des filtres PHP.
- Ce code se place dans
functions.phpdu thème enfant, ouvert depuis Outils → Éditeur de fichiers de thème sur un thème FSE. wp_mail_content_typea un effet global sur tous les e-mails du site, y compris ceux d’autres extensions.- Les e-mails WooCommerce se personnalisent différemment, avec leurs propres réglages : voir l’astuce dédiée.