ação save_post somente ao criar uma nova postagem

insira a descrição da imagem aqui

Eu tenho um tipo de postagem personalizado denominado Tarefa . Criei uma function que envia um email para o agente selecionado, notificando que uma nova tarefa foi atribuída. Aqui está a function:

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 ".$agent_display_name."
" $message .= "You have been assigned a new task
"; $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);

A function envia o email para o agente, o que está bem. A questão é que ele triggers mesmo quando o post é atualizado ou se move para o lixo .

Eu quero que ele dispare somente quando uma nova postagem é criada usando o save_post . A razão pela qual eu preciso usar save_post é porque eu tenho que obter o e-mail do agente do object do usuário no Tipo de campo do usuário usando o plugin ACF. Se eu usar publish_post, o e-mail não é enviado, uma vez que não pode buscar o e-mail do agente. Ajuda por favor.

Solutions Collecting From Web of "ação save_post somente ao criar uma nova postagem"

A ação save_post também passa três parâmetros para o retorno de chamada, um dos quais sendo $update que indica se a postagem que está sendo salva é uma postagem existente ou não.

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

Vejo: