Когда сообщение обновляется, возникает несколько ловушек:
'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, это опечатка здесь, или это было в вашем исходном коде? также включите отладку во время разработки.