J'essaie d'envoyer un courrier électronique uniquement lorsque vous enregistrez un message en tant que brouillon. Cela ne semble pas fonctionner avec le code actuel:
add_action ('save_post', 'er_send_email_on_post_draft_save'); function er_send_email_on_post_draft_save ($ post_id) { // ne vérifie pas la publication révision if ($ post_id-> post_status == 'draft') { $ post_title = get_the_title ($ post_id); $ post_url = get_permalink ($ post_id); $ subject = 'Un message a été mis à jour'; $ message = "Un message a été mis à jour sur votre site Web:\n\n"; $ message. = "". $ post_title. "\ n\n"; // envoyer un courrier électronique à admin wp_mail ('[email protected]', $ subject, $ message); } }
cela fonctionne si je change l'instruction if en:
! wp_is_post_revision ($ post_id)
mais ce n'est pas ce que je veux, je veux seulement envoyer une notification si elle est enregistrée en tant que brouillon.
$post_id
est un entier (uniquement l'identifiant de la publication) et non un objet de publication (l'ensemble de la publication avec l'identifiant, le statut, le titre ...)
alors globalisez l'objet $post
et vérifiez le statut à partir de là, par exemple:
function er_send_email_on_post_draft_save( $post_id ) {
global $post;
//verify post is not a revision
if ( $post->post_status == 'draft' ) {
$post_title = get_the_title( $post_id );
$post_url = get_permalink( $post_id );
$subject = 'A post has been updated';
$message = "A post has been updated on your website:\n\n";
$message .= "" .$post_title. "\n\n";
//send email to admin
wp_mail( '[email protected]', $subject, $message );
}
}
et si vous le souhaitez, vous pouvez utiliser un crochet activé uniquement lorsque post est enregistré en tant que brouillon
add_action('draft_post', 'send_my_mail_on_draft' );
function send_my_mail_on_draft( $post_id,$post){
$post_title = get_the_title( $post_id );
$post_url = get_permalink( $post_id );
$subject = 'A post has been updated';
$message = "A post has been updated on your website:\n\n";
$message .= "" .$post_title. "\n\n";
//send email to admin
wp_mail( '[email protected]', $subject, $message );
}
Essayez avec ceci:
function dddn_process($id) {
// emails anyone on or above this level
$email_user_level = 7;
global $wpdb;
$tp = $wpdb->prefix;
$result = $wpdb->get_row("
SELECT post_status, post_title, user_login, user_nicename, display_name
FROM {$tp}posts, {$tp}users
WHERE {$tp}posts.post_author = {$tp}users.ID
AND {$tp}posts.ID = '$id'
");
if (($result->post_status == "draft") || ($result->post_status == "pending")) {
$message = "";
$message .= "Draft updated on '" . get_bloginfo('name') . "'\n\n";
$message .= "Title: " . $result->post_title . "\n\n";
// *** Choose one of the following options to show the author's name
$message .= "Author: " . $result->display_name . "\n\n";
// $message .= "Author: " . $result->user_nicename . "\n\n";
// $message .= "Author: " . $result->user_login . "\n\n";
$message .= "Link: " . get_permalink($id);
$subject = "Draft updated on '" . get_bloginfo('name') . "'";
$editors = $wpdb->get_results("SELECT user_id FROM {$tp}usermeta WHERE {$tp}usermeta.meta_value >= " . $email_user_level);
$recipient = "";
foreach ($editors as $editor) {
$user_info = get_userdata($editor->user_id);
$recipient .= $user_info->user_email . ',';
}
mail($recipient, $subject, $message);
}
}
add_action('save_post', 'dddn_process');
?>
Il suffit de créer le fichier notification.php avec la description des plugins wp, de le télécharger dans le dossier plugins et de l'activer comme plugin classique