Когда сообщение обновляется, возникает несколько ловушек:
'pre_post_update'
это действие выстрелил только до того пост обновляется, передается аргумент являются 2: $post_ID
и $data
что это массив всех других colums базы данных о почтовом столе
'transition_post_status'
является хуком, запускаемым при обновлении, и передают 3 аргумента: $ new_post_status $old_post_status
и $post
(объект).
- Затем запускаются 2 других переходных хука, но они имеют динамическое имя, это означает, что эффективное действие зависит от старого и нового статуса сообщения.
"{$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
( см. Документы ):
// if you don't add 3 as as 4th argument, this will not work as expected
add_action( 'save_post', 'my_save_post_function', 10, 3 );
function my_save_post_function( $post_ID, $post, $update ) {
$msg = 'Is this un update? ';
$msg .= $update ? 'Yes.' : 'No.';
wp_die( $msg );
}
Последнее замечание касательно времени : вы должны быть уверены, что оно add_action
вызывается до того, как будет запущено действие, иначе оно ничего не сделает
Например, этот код:
wp_update_post( $post );
add_action( 'save_post', 'my_function', 10, 3 );
ничего не будет делать, потому что действие добавляется после срабатывания хука. Это легко распознать, в реальном мире код не всегда таков.
save_post
, это опечатка здесь, или это было в вашем исходном коде? также включите отладку во время разработки.