web-dev-qa-db-fra.com

Notification à l'administrateur ou à l'auteur à la nouvelle publication

J'utilise une fonction personnalisée avec le crochet 'publish_post' pour envoyer une notification à l'auteur lorsque le message a été publié, mais le problème auquel je suis confronté actuellement est que la notification est envoyée deux fois, ainsi que lorsque le message est mis à jour. Voici à quoi ressemble ma fonction.

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

   $message = "
      Hi ".$author->display_name.",
      New post, ".$post->post_title." has just been published at ".get_permalink( $post_id ).".
   ";
   wp_mail($author->user_email, "New Post Published", $message);
}
add_action('publish_post', 'authorNotification');

est-ce que j'ai râté quelque chose?

1
Kevin S

Vous devez écrire votre crochet pour l'action transition_post_status:

function authorNotification( $new_status, $old_status, $post ) {
    if ( $new_status == 'publish' && $old_status != 'publish' ) {
        $author = get_userdata($post->post_author);
        $message = "
            Hi ".$author->display_name.",
            New post, ".$post->post_title." has just been published at ".get_permalink( $post->ID ).".
        ";
        wp_mail($author->user_email, "New Post Published", $message);
    }
}
add_action('transition_post_status', 'authorNotification', 10, 3 );
3
Eugene Manuilov