Je construis un module complémentaire à un module d’événements qui vérifie la disponibilité, puisqu’il n’y avait pas de fonction pour cela dans ce module. Maintenant que j'ai construit la logique, il me faudra envoyer trois courriels:
Un si le poste est soumis pour la première fois (c'est-à-dire "Nouveau rendez-vous")
Un message si le message a été publié par l'administrateur du site, car les utilisateurs normaux ne pourront pas publier eux-mêmes (c'est-à-dire "Votre rendez-vous a été approuvé")
Je me suis connecté à save_post et à publish_post pour les deux premiers, mais je souhaite recevoir un courrier électronique totalement différent lors de la modification d'un message PUBLISHED. Comment puis-je vérifier si le message est déjà publié et qu'il ne s'agit que d'une édition, par opposition à sa première publication?
Accédez au edit_post
pour prendre en compte les modifications. Et jetez un oeil à wp_transition_post_status()
qui est appelé sur les insertions et les mises à jour:
function wp_transition_post_status($new_status, $old_status, $post) {
do_action('transition_post_status', $new_status, $old_status, $post);
do_action("{$old_status}_to_{$new_status}", $post);
do_action("{$new_status}_{$post->post_type}", $post->ID, $post);
}
Sur publish vous vous connectez à
draft_to_publish
,pending_to_publish
etauto-draft_to_publish
.Pour edits hook dans publish_to_publish
.
Un mini plugin qui informe tous les auteurs lors de la publication ou de la modification.
<?php
/**
* Plugin Name: (#56779) Notify authors
*/
add_action( 'transition_post_status', 'wpse_56779_notify_authors', 10, 3 );
function wpse_56779_notify_authors( $new_status, $old_status, $post )
{
if ( 'publish' !== $new_status )
return;
$subject = 'publish' === $old_status
? __( 'Edited: %s', 'your_textdomain' )
: __( 'New post: %s', 'your_textdomain' );
$authors = new WP_User_Query( array( 'role' => 'Author' ) );
foreach ( $authors as $author )
{
wp_mail(
$author->user_email,
sprintf( $subject, $post->post_title ),
$post->post_content
// Headers
// Attachments
);
// Slow down
sleep( 5 );
}
}