save_post действие только при создании нового сообщения

введите описание изображения здесь

У меня есть пользовательский тип отправки с именем Task . Я создал функцию, которая отправляет электронное письмо выбранному агенту, и назначается новое задание. Вот функция:

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); 

Функция отправляет электронное письмо агенту, который в порядке. Проблема в том, что он срабатывает, даже когда сообщение обновляется или переходит в корзину .

Я хочу, чтобы он срабатывал только при создании новой записи с помощью save_post . Причина, по которой мне нужно использовать save_post, заключается в том, что я должен получить адрес электронной почты агента из объекта пользователя в поле User Type, используя плагин ACF. Если я использую publish_post, письмо не отправляется, поскольку оно не может получить электронную почту агента. Помоги пожалуйста.

Solutions Collecting From Web of "save_post действие только при создании нового сообщения"

Действие save_post также передает три параметра вашему save_post вызову, один из которых – $update который обозначает, является ли сохраненное сообщение существующим сообщением или нет.

 /** * 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 ); 

Видеть: