Добавить действие, которое будет срабатывать при обновлении опубликованного сообщения

У меня есть несколько настроек:

add_action('publish_post', array($this, 'newPost'), 10, 2); add_action('post_updated', array($this, 'updatePost'), 10, 3); 

Когда я обновляю уже опубликованное сообщение, метод newPost запускается в противоположность методу «updatePost». Я предполагаю, что это потому, что сообщение уже опубликовано, так что было бы хорошим способом запустить другой метод (или определить, что это обновление в отличие от недавно опубликованного сообщения), когда обновляется ранее опубликованное сообщение?

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

В качестве альтернативы вы можете использовать для этого переход «переход_post_status». Этот крючок запускается всякий раз, когда статус сообщения изменяется. В вашем случае вам нужно проверить, совпадает ли старый и новый статус сообщения, который publish

Вы также можете установить условные обозначения в соответствии с $post , который является текущим сообщением, которое обновляется / публикуется и т. Д.

Вы можете попробовать следующее:

 add_action('transition_post_status', function ($new_status, $old_status, $post) { if ( $old_status == 'publish' && $new_status == 'publish' ) { //Do something when post is updated } }, 10, 3 ); 

Для этого вы можете использовать действия перехода по статусу .

 function wpd_updating_a_published_post( $post ){ // do something } add_action( 'publish_to_publish', 'wpd_updating_a_published_post', 10, 1 ); 

Вы можете ответить пользователю на запрос Мило или вы можете использовать условное post_date внутри функции hooked, а затем сравнить post_date и post_modified .

 add_action('save_post', array($this, 'updatePost'), 10, 3); function updatePost($post_id){ // If this is just a revision, don't send the email. if ( wp_is_post_revision( $post_id ) ) return; $post = get_post($post_id); // Compare the date if ($post->post_date == $post->post_modified){ // Do something for a new post } elseif ($post->post_date < $post->post_modified){ // Do something for an updated post }