Si votre blog compte plusieurs auteurs et qu’un administrateur doit valider chaque article avant sa publication, il peut être intéressant de notifier l’auteur de l’article grâce à un email lorsque son article a été approuvé et publié.

Grâce à WordPress c’est très simple, à condition d’avoir un workflow de validation simple… dans le cas contraire, rien d’insurmontable non plus, mais des connaissances un peu plus avancées sont nécessaires.

A noter que ce snippet peut également vous être utile dans le cas où vous planifier une publication et que vous souhaitez être notifié par email lorsque votre article a bien été publié.

Utiliser la fonction wp_mail

Nous allons utiliser la fonction wp_mail qui permet d’envoyer des email depuis Worpdress.

La fonction comprend 3 variables :

  • l’email du destinataire
  • l’objet du message
  • le message en lui même

Ici, nous allons donc automatiser l’envoie d’un email lorsqu’un article est publié.

function authorEmailNotification($post_id) {
   $post = get_post($post_id);
   $author = get_userdata($post->post_author);

   $message = "
      Bonjour ".$author->display_name.",
      Votre article, ".$post->post_title." vient d'être approuvé et publié à l'adresse suivante ".get_permalink( $post_id ).". Merci !
   ";
   wp_mail($author->user_email, "Votre article est en ligne", $message);
}
add_action('publish_post', 'authorEmailNotification');

Attention, si vous dé-publiez l’article en question et que vous le re-publiez, un nouvel email sera envoyé.

Notification unique

Une alternative intéressante à mon avis est d’ajouter un custom field au post afin de savoir s’il a déjà été publié, et donc si une notification a déjà été envoyée.

Dans le cas contraire on ne fait rien…

function authorEmailNotification($post_ID) {
    if(get_post_meta($post_ID, 'post_notification', true) != '') return;
    update_post_meta($post_ID, 'post_notification', 'publish');

    $post = get_post($post_ID);
    $author = get_userdata($post->post_author);

    $message = "
    	Bonjour ".$author->display_name.",
    	Votre article, ".$post->post_title." vient d'être approuvé et publié à l'adresse suivante ".get_permalink( $post_ID ).". Merci !
    ";
    wp_mail($author->user_email, "Votre article est en ligne", $message);
}
add_action('publish_post', 'authorEmailNotification');

Utilisation des hook personnalisé

Enfin, si vous souhaitez aller plus loin et notifier l’utilisateur lors de tout changement d’état du post et avec des message personnalisés, vous pouvez utiliser les hooks de changement d’état.

Nous en avons utilisé un plus haut, il s’agit de publish_post, comme sont nom l’indique, il permet d’appeler une fonction au moment ou un POST est PUBLISH.

Voici la structure de ces hooks : NOM-ETAT_POST-TYPE

On peut donc faire beaucoup de choses !

  • publish_post
  • trash_post
  • delete_post
  • untrash_post
  • post_updated
  • publish_page
  • save_post

Par ailleurs, comme nous venons de le voir, la structure de ces hooks est claire, il s’agit de faire précéder le nom du post type par un état « POST STATUS« .

Si vous avez créé un état « outdated » et que vous avez un post type « product« , votre hook sera construit comme ceci : outdated_product. Il faudra donc l’utiliser comme suit :

add_action('outdated_product', 'ma_fonction_de_notification');

Enfin, pour ceux qui souhaitent aller toujours plus loin, je vous invite à lire la doc sur la fonction wp transition post status qui devrait vous combler !

Article rédigé parBrice CAPOBIANCO

Autodidacte passionné par WordPress. J'aime apprendre et créer pour ensuite partager !

Coorganisateur des Meetups WordPress Rennes et fondateur de bweb.
Partager cet article

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Afficher le commentaire

1 commentaire