я пытаюсь перехватить, когда сообщение обновляется, но все перехвата updated_post_meta
add_action('updated_post_meta', 'my_function');
function my_function($post_id) {
echo 'This is my post ID : '.$post_id;
}
Я пробовал это, add_action('save_post', 'my_function');
но ни один идентификатор не был отражен, или, возможно, это сообщение уже отражено, но никогда не отображается из-за переадресации заголовка.
save_post
, это опечатка здесь, или это было в вашем исходном коде? также включите отладку во время разработки.Ответы:
Когда сообщение обновляется, возникает несколько ловушек:
'pre_post_update'
это действие выстрелил только до того пост обновляется, передается аргумент являются 2:$post_ID
и$data
что это массив всех других colums базы данных о почтовом столе'transition_post_status'
является хуком, запускаемым при обновлении, и передают 3 аргумента: $ new_post_status$old_post_status
и$post
(объект)."{$old_status}_to_{$new_status}"
и"{$new_status}_{$post->post_type}"
. Сначала передайте в качестве аргумента только объект post, а затем передайте id сообщения и объект post. Найдите документацию здесь .'edit_post'
которые передают 2 аргумента:$post_ID
и$post
(объект)'post_updated'
что передача 3 аргумента:$post_ID
,$post_after
(после объекта после обновления),$post_before
(после объекта перед обновлением)"save_post_{$post->post_type}"
это зависит от почтового типа, например , для стандартных должностей'save_post_post'
и страниц'save_post_page'
, этот крюк пропуск 3 аргумента:$post_ID
,$post
(объект) и$update
это логическое значение (истина или ложь) , что справедливо при выполнении обновления, в На самом деле этот хук срабатывает также при первом сохранении записи.save_post
', который запускается как при обновлении, так и при первом сохранении и передает те же 3 аргумента из предыдущего хука.save_post_{$post_type}
', который запускается как при обновлении, так и при первом сохранении, и передает те же первые 2 аргумента предыдущего хука.wp_insert_post
' , который запускается как при обновлении, так и при первом сохранении, и передает те же 3 аргумента из предыдущих 2 хуков.Эти ловушки запускаются каждый раз, когда сообщение обновляется, как через административные страницы в бэкэнде, так и при обновлении «вручную» с помощью
wp_update_post
илиwp_insert_post
функций.Когда сообщение обновляется с использованием страниц администратора, запускаются дополнительные хуки, например,
'update_post_redirect'
или'post_updated_messages'
. (См. Этот и этот WPSE ответы для примеров использования).Обратите внимание, что если вы хотите использовать какой-то аргумент hooks, это не первый аргумент, который вы должны явно объявить в
add_action
вызове.Например, если вы хотите использовать
'$update'
аргумент (то есть третий)'save_post'
хука, который нужно добавить в3
качестве$accepted_args
параметраadd_action
( см. Документы ):Последнее замечание касательно времени : вы должны быть уверены, что оно
add_action
вызывается до того, как будет запущено действие, иначе оно ничего не сделаетНапример, этот код:
ничего не будет делать, потому что действие добавляется после срабатывания хука. Это легко распознать, в реальном мире код не всегда таков.
источник
function save_post_test( $post_id, $post, $update ) { print ' post_id : '; var_export( $post_id ); print ' post : '; var_export( $post ); print ' update : '; var_export( $update ); wp_die( 'save_post hook runs when you click Add New..' ); } add_action( 'save_post', 'save_post_test', 10, 3 );
Почему действие «save_post» запускается при добавлении нового, а не при публикации? Предположим, чтобы сделать пост черновика.Почему бы не зацепить
post_updated_messages
. Таким образом, вы можете показать это сообщение так же, как обновленный пост WordPress по умолчанию.Посмотрите на пример здесь:
http://codex.wordpress.org/Function_Reference/register_post_type
под
post_updated_messages
источник