Выполнить действие при обновлении/публикации записи

10 февр. 2012 г., 19:26:56
Просмотры: 26.3K
Голосов: 6

Я хотел бы выполнять пользовательский запрос с использованием мета-данных каждый раз, когда запись обновляется или публикуется.

Есть ли что-то, что я могу добавить в functions.php, чтобы срабатывало при возникновении этих событий?

0
Все ответы на вопрос 4
3
11

Действие save_post срабатывает при обновлении и/или публикации записи — включая момент, когда новая запись добавляется впервые.

<?php
add_action( 'save_post', 'wpse41912_save_post' );
function wpse41912_save_post()
{
    // выполнить действия
}

Если вам нужно, чтобы ваши функции выполнялись только при редактировании записи, используйте хук edit_post.

Если необходимо срабатывание при изменении статуса записи с черновика на опубликованный, подключитесь к хуку transition_post_status.

10 февр. 2012 г. 19:35:51
Комментарии

save_post срабатывает при создании или обновлении записи. Если вам нужно выполнить действия именно при публикации, используйте publish_post. Иначе ваши функции будут выполняться и для черновиков, и других статусов.

Sterling Hamilton Sterling Hamilton
10 февр. 2012 г. 20:51:09

save_post запускается каждый раз при вызове wp_insert_post. Для всех типов записей - черновиков и прочего. Если нужно предотвратить выполнение для автосохранений, можно добавить проверку if( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) return внутри функции, подключенной к хуку save_post.

chrisguitarguy chrisguitarguy
10 февр. 2012 г. 22:08:02

+1 за использование функции edit_post

Warface Warface
2 июл. 2014 г. 16:28:45
0

Есть несколько действий, которые вы можете использовать. Например:

  • save_post
  • edit_post
  • publish_post
  • и др.

Реже используются, но также доступны хуки перехода статусов записи.

10 февр. 2012 г. 19:35:21
0

Хук edit_post, вероятно, является лучшим вариантом... так как он срабатывает каждый раз, когда запись или страница публикуется или обновляется. save_post — это еще одна жизнеспособная альтернатива... возможно, даже более предпочтительная, если вам не нужно, чтобы функция выполнялась при обновлении комментариев.

http://codex.wordpress.org/Plugin_API/Action_Reference

На странице документации save_post в Codex приведен пример функции, которая выполняется при каждом сохранении записи:

http://codex.wordpress.org/Plugin_API/Action_Reference/save_post

10 февр. 2012 г. 19:33:13
0

Если вы хотите выполнить действие при обновлении/сохранении любого произвольного типа записи -

add_action('save_post','save_post_callback');
function save_post_callback($post_id){
global $post; 
if ($post->post_type != 'MY_CUSTOM_POST_TYPE_NAME'){
    return;
}
// если выполнение дошло до этой точки, значит это нужный тип записи - выполняем необходимые действия...
}
6 сент. 2018 г. 09:47:23