Tout savoir sur WordPress
Tutoriel WordPress

Envoyer un email aux contributeurs lors de la publication de leurs articles

Découvrez la démarche à suivre pour envoyer un email de notification aux contributeurs lorsqu’un de leurs articles vient d’être publié.

Les contributeurs sur un site WordPress ont la possibilité de rédiger et éditer leurs articles. Cependant, ils sont dans l’incapacité de publier leurs articles. Ils doivent être validés et publiés par un éditeur ou un administrateur.

Il peut être sympa d’envoyer un email de notification à vos collaborateurs lors de la publication de leurs articles.

Copier le code ci-dessous dans le fichier functions.php de votre thème :

add_action('transition_post_status','gkp_send_notification_publish_to_contributor');
function gkp_send_notification_publish_to_contributor( $new_status, $old_status, $post ) {
  
    if( $post->post_author != get_current_user_id() && $new_status == 'publish' ) {
   
        $author = get_userdata($post->post_author);
	
	$message = "Bonjour ".$author->display_name.",
	            Votre article, ".$post->post_title." vient d'être publié !";
	wp_mail($author->user_email, "Votre article est publié", $message);
   }
}
Cet article a été mis à jour il y a 2501 jours - Il n'est peut être plus à jour !

Article écrit par Jonathan B.

Jonathan est le co-fondateur de WP Media, startup connue pour être l’auteur de WP Rocket et Imagify. Il est aussi co-organisateur du WordCamp Lyon et Paris.

11 Commentaires

  1. Astuce bien sympa, merci, elle sera utile pour quelques uns de mes sites :-)

    PS : Petite question, quelle bidouille ou plugin tu utilises pour le module présent en bas de chaque page ? (se connecter/inscription …)

  2. @Crunch : Le module pour se connecter/déconnecter est fait maison. Je n’ai pas utilisé de plugin pour mettre ce système en place.

    Dès que je reçois mon micro, je ferai une série de tutoriel à ce sujet :)

  3. @jonathan : Raah mais c’est encore mieux ça ! :)

    Vivement la réception du micro alors … J’ai déjà une idée des fonction utilisées mais on va attendre le tuto sagement !

  4. Le problème de la méthode publish_post est que cela envoie un email même lorsqu’on édite un billet. Le mieux est d’utiliser ses trois méthodes :

    add_action(‘future_to_publish’,’fonction_name’);
    add_action(‘new_to_publish’,’fonction_name’);
    add_action(‘draft_to_publish’,’fonction_name’);

    Un problème persiste, cela envoie un email quand on crée une page…

  5. Hello,

    De mon côté j’ai customizé un peu le code en vérifiant le type de post avant de créer le message et d’envoyer le mail :

    if($post->post_type == ‘post’) { /* do what you want */ }

    et j’ai ajouté l’action sur le hook « pending_to_publish » puisque le statut de mes posts sont par défaut « pending » et non « draft ».

    Voilà voilà ! :)

  6. Bonjourà tous,
    Je propose (encore !) un code un peu différent qui va utiliser « transition_post_status » pour que cette fonction soit lancée aussi pour les status persos, chez moi j’ai un statut « Idées » donc soit j’ajoute le hook « idees_to_publish » ou soit pour ne pas retoucher le code à chaque nouveau statut (demandé par mon fameux client, celui qui vous demande un nouveau truc toutes les semaines avant de changer d’avis la semaine suivante, vous le connaissez aussi ? ;p), je vais donc utiliser ce hook précédemment cité.
    Code:

    function send_notification_publish_to_authors( $new_status, $old_status, $post )
    {
     if( $post->post_author!=get_current_user_id() // Seulement si je ne suis pas celui qui publie l'article
      && $new_status == 'publish' // Le nouveau status du post est "publish" (publié)
      && in_array( $post->post_type, array( 'post', 'page' ) ) // Ajoutez vos CPT pour n'executer ce code que sur certains types de posts, ou commentez cette ligne.
       ) { 
        $author = get_userdata( $post->post_author ); // On va chercher les informations sur l'auteur
        $message = sprintf(  'Bonjour %s,'."n".'Votre article, %s vient d'être publié ! A bientôt et merci.', // le message à envoyer
           $author->display_name, // Nom de l'auteur
           $post->post_title // Titre de l'article
           );
        wp_mail( $author->user_email, 'Votre article est publié', $message ); // Envoie du mail
       }
    }
    add_action( 'transition_post_status', 'send_notification_publish_to_authors', 10, 3 );
    

    Aussi je vérifie que l’auteur n’est pas moi, c’est à dire celui qui publie l’article, inutile que je m’envoie un mail ! Encore, plus besoin de faire un get_post() puisque je l’ai en paramètre (au pire on l’avait en global ;p)
    Puis j’ai ajouté l’astuce de Geoff qui vérifie les types de posts (CPT) avant d’envoyer le mail.
    Enfin le message contient le lien vers l’article, le tout formaté avec sprintf().
    Dernier détail, j’ai modifié le nom de la fonction car il n’y a pas que les contributeurs qui peuvent être la cible de ce mail, j’ai un custom role « Redacteur » qui ressemble au contributeur mais ui n’en ai pas un ;)
    Bonne journée, merci pour l’astuce que j’avais besoin :)

  7. Haha, je ne connaissais pas encore le hook transition_post_status à l’époque :/

    J’ai mis à jour le code en tenant compte de quelques remarques ^^

elit. adipiscing tristique dapibus non accumsan