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 :
[pastacode lang=”php” message=”” highlight=”” provider=”manual”]
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);
}
}
[/pastacode]
11 Commentaires
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 …)
@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 :)
@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 !
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…
@ An Infinite Summer : Toute à fait vous avez raison !
J’ai modifié l’article en conséquence.
Merci ca va mettre utile
Super ca a “détruit” le site
Si on fait un copier coller il il des ’ `au lieu de ‘
En effet Jonathan, pense à modifier les ” ‘ ” en ” ‘ “. Ca risque de poser des problèmes à plus d’un ;-)
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à ! :)
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:
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 :)
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 ^^