Envoyer automatiquement un email aux contributeurs lorsqu’un article est programmé

le 22 janvier 2013

WordPress

Envoyer automatiquement un email aux contributeurs lorsqu'un article est programmé

Toujours dans l’optique d’adapter Wordpress aux besoins de mon webzine, je cherchais depuis quelques temps un moyen d’envoyer un email aux contributeurs de celui-ci dans certaines circonstances : quand leur article est publié, quand un article est programmé, etc. Le plugin Edit Flow propose un système de notifications, mais il ne me convient pas réellement, car il faut penser à cocher des cases pour chaque article…

En fouinant un peu sur le web, j’ai trouvé sur l’excellent WpRecipes – à bookmarker si vous ne connaissez pas – ce petit bout de code, qui m’a servi de base pour l’astuce que je vous propose aujourd’hui.

 

Envoyer une notification lorsqu’un article est publié

Commençons par l’astuce donnée par WpRecipes. En plaçant ce code dans le fichier functions.php de votre thème WordPress, un email sera automatiquement envoyé à l’auteur d’un article lorsque celui-ci sera publié. Pour adapter l’email à vos besoins, il suffit de modifier le texte placé après $message = « .


//Notification automatique à la publication d'un article
function wpr_authorNotification($post_id) {
   $post = get_post($post_id);
   $author = get_userdata($post->post_author);

   $message = "
      Salut ".$author->display_name.",
      Ton article, ".$post->post_title." Vient d'être publié. N'oublie pas de le partager avec tes amis et de surveiller les commentaires !
   ";
   wp_mail($author->user_email, "Your article is online", $message);
}
add_action('publish_post', 'wpr_authorNotification');

Facile, non ? La fonction wpr_authorNotification déclenche l’envoi d’email dès que le statut publish_post est attribué à un article. Oui mais… L’email est envoyé à chaque fois que l’article est publié, même lorsque vous mettez à jour celui-ci après l’avoir modifié.

 

Envoyer une notification lorsqu’un article est publié pour la première fois

C’est ici que le bât blesse. En laissant la fonction précédente telle quelle dans mon fichier functions.php, j’ouvre ma boîte email à des remarques de ce type :

WordPress est cassé, je reçois trop de mails !

Il me faut donc la modifier, pour que mes contributeurs ne reçoivent qu’un seul email par article, lors de leur première publication. Heureusement, un petit tour sur le Codex de WordPress m’apprend qu’il existe des « Post Status Transitions » prévues à cet effet.

Je reprends donc le code précédent, mais remplace publish_post par pending_to_publish.


//Notification automatique à la publication d'un article
function wpr_authorNotification($post_id) {
$post = get_post($post_id);
$author = get_userdata($post->post_author);

$message = "
Salut ".$author->display_name.",
Ton article, ".$post->post_title." Vient d'être publié. N'oublie pas de le partager avec tes amis et de surveiller les commentaires !
";
wp_mail($author->user_email, "Ton article est en ligne", $message);
}
add_action('pending_to_publish', 'wpr_authorNotification');

Grâce à ce code, mes contributeurs recevront un email uniquement lorsque leur article passera du statut « En attente de relecture » à « Publié ». Sauf que…

Il m’arrive de programmer des articles pour plus tard, dans ce cas-ci, les contributeurs ne recevront pas l’email !

Pas de panique, il me suffit d’ajouter une ligne à ce code :


add_action('future_to_publish', 'wpr_authorNotification');

Grâce à cette ligne, WordPress enverra automatiquement un email aux contributeurs lorsque leur article passera du statut « Planifié » à « Publié ».

Envoyer un email à un contributeur choisi lors de la publication/programmation d’un article

Dernière chose, je souhaite notifier automatiquement la CM de Mandorine de la programmation et/ou de la publication des articles. Pour ce faire, je reprends le même code, et modifie simplement le nom de la fonction que je nomme wpr_CMNotification au lieu de wpr_authorNotification (vous pouvez nommer la fonction comme vous le souhaitez, tant qu’elle n’est pas identique à la précédente).


//Notification automatique à la publication/planification d'un article (CM)
function wpr_CMNotification($post_id) {
$post = get_post($post_id);
$author = get_userdata($post->post_author);

$message = "
Salut CM,
L'article, ".$post->post_title." vient d'être planifié pour le ".$post->post_date.". Pense à le partager sur les réseaux sociaux stp !
";
wp_mail('email@gmail.com', 'Un article a été planifié', $message);
}
add_action('future_to_publish', 'wpr_CMNotification');
add_action('pending_to_future', 'wpr_CMNotification');

Ici, à la place de wp_mail($author->user_email, j’écris wp_mail(’email@gmail.com’, qui me permet d’envoyer une notification au destinataire de mon choix.

Et je choisis les statuts de transition future_to_publish et pending_to_future pour que la notification soit déclenchée uniquement lorsqu’un article programmé est publié, ou lorsqu’un article en attente de relecture est planifié.

Un petit bout de code très utile, qui évite d’installer un plugin supplémentaire ;)

Plus d'astuces pour votre blog WordPress multi-utilisateurs.

2 commentaires

  1. […] De mon côté, j’ai préféré « sortir » d’Edit Flow pour notifier mes contributeurs automatiquement. J’ai déjà expliqué la procédure à suivre dans cet article : Envoyer automatiquement un email aux contributeurs lorsqu’un article est programmé. […]

  2. Gaëtan dit :

    Bonjour

    Merci pour cette solution que je recherchais désespérément…

    Couplé avec cette astuce pour Changer le nom et l’adresse d’expédition des emails c’est parfait !

    Il ne manquerai plus qu’une technique qui permette d’ajouter du HTML dans le corps du mail…

    Une idée ? Avec la fonction « echo » peut-être ?

    Merci

Ajouter un commentaire