J'ai un Type de message personnalisé nommé Tâche . J'ai créé une fonction qui envoie un courrier électronique à l'agent sélectionné, notifiant qu'une nouvelle tâche a été attribuée. Voici la fonction:
function real_estate_send_mail_to_agent() {
global $post;
// If this is just a revision, don't send the email.
if ( wp_is_post_revision( $post->ID ) ) {
return;
}
// Exit function if post type is not equal to task
if ( $post->post_type !== 'task' ) {
return;
}
// Email header
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
// Recipient
$agent = get_field_object("agent", $post->ID);// Get agent object from user_table
$emailTo = (string) $agent['value']['user_email']; // Get agent email
$agent_display_name = $agent['value']['display_name']; // Get agent display name
// Email Subject
$subject = "New Task: " .wp_strip_all_tags(get_the_title($post->ID));;
// Email Body
$message = "Hi <b>".$agent_display_name."</b><br/>"
$message .= "You have been assigned a new task <br/>";
$message .= "Please have a look at it ".get_permalink( $post->ID );
// Send the mail
wp_mail( $emailTo, $subject, $message, $headers );
}
add_action('save_post', 'real_estate_send_mail_to_agent', 11);
La fonction envoie le courrier électronique à l'agent, ce qui est correct. Le problème est qu'il se déclenche même lorsque la publication est updated ou move to trash .
Je veux qu'il soit déclenché uniquement lorsqu'un nouveau message est créé à l'aide de save_post . La raison pour laquelle j'ai besoin d'utiliser save_post est parce que je dois obtenir le courrier électronique de l'agent à partir de l'objet utilisateur dans le type Type de champ utilisateur à l'aide du plugin ACF. Si j'utilise publish_post, l'email n'est pas envoyé car il ne peut pas extraire l'email de l'agent. Aidez-moi, s'il vous plaît.
L’action save_post
transmet également trois paramètres à votre rappel, l’un d’eux étant $update
, qui indique si la publication sauvegardée est une publication existante ou non.
/**
* Save post metadata when a post is saved.
*
* @param int $post_id The post ID.
* @param post $post The post object.
* @param bool $update Whether this is an existing post being updated or not.
*/
function save_post_callback( $post_id, $post, $update ) {
if ( $update ) {
return;
}
//business logic...
}
add_action( 'save_post', 'save_post_callback', 10, 3 );
Voir: