Personnaliser les emails transactionnels

Progression du Chapitre :

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.

Éditeur de fichiers de thème, fichier functions.php ouvert avec le code

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 );
diagramme des filtres disponibles

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.

mail de bienvenue reçu, objet et contenu personnalisés

Tableau récapitulatif

FiltreRôle
wp_mail_from / wp_mail_from_nameAdresse et nom de l’expéditeur
wp_mail_content_typePasse l’e-mail en HTML (affecte tous les e-mails du site)
wp_new_user_notification_emailObjet et corps du mail de bienvenue
retrieve_password_title / retrieve_password_messageObjet 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.php du thème enfant, ouvert depuis Outils → Éditeur de fichiers de thème sur un thème FSE.
  • wp_mail_content_type a 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.
Article ajouté au panier
0 Produit - 0,00