edit_post_(post_type) │ хук-событие │ WP 5.1.0

Срабатывает после обновления существующей записи указанного типа в БД.

Динамическую часть (post_type) нужно заменить названием типа записи:

В wp_insert_post() событие вызывается при обновлении записи (когда указан ID) или через wp_update_post(). При вставке новой записи вызов пропускается.

Сохранение из редактора может быть обновлением уже созданного авто-черновика.

Хук не ограничен админкой. В ядре он также вызывается:

При обновлении через wp_insert_post() порядок событий такой:

Бесконечная рекурсия

Вызов wp_update_post() для той же записи внутри коллбэка снова запускает этот хук и может привести к бесконечной рекурсии. Поэтому перед вложенным обновлением временно отключите свой коллбэк через remove_action(), затем подключите обратно.

Параметр $fire_after_hooks = false у wp_insert_post() не отключает это событие.

Для обработки и создания и обновления используйте save_post_(post_type).

Для сравнения полей записи до и после обновления - post_updated.

Для работы после сохранения записи, её терминов и метаданных - wp_after_insert_post.

При обычном обновлении вложения через wp_insert_post() этот хук пропускается: используйте edit_attachment или attachment_updated.

Использование

add_action( 'edit_post_(post_type)', 'wp_kama_edit_post_type_action', 10, 2 );

/**
 * Function for `edit_post_(post_type)` action-hook.
 * 
 * @param int     $post_id Post ID.
 * @param WP_Post $post    Post object.
 *
 * @return void
 */
function wp_kama_edit_post_type_action( $post_id, $post ){
	// action...
}
$post_id(число)
ID обновлённой записи.
$post(WP_Post)

Объект записи. Чтобы получить его в коллбэке, передайте 2 в четвёртом аргументе add_action().

При вызове из wp_update_comment_count_now() объект загружен до обновления счётчика, поэтому $post->comment_count содержит прежнее значение.

Для актуальных данных повторно получите запись через get_post( $post_id ). Если нужны старое и новое значения счётчика, используйте wp_update_comment_count.

Примеры

#1 Сбросим кеш карточки книги после обновления

Предположим, данные карточки книги хранятся в транзиенте myplugin_book_{ID}. Удалим его после обновления записи типа book, чтобы при следующем обращении приложение заново сформировало карточку.

add_action( 'edit_post_book', 'myplugin_clear_book_cache' );

function myplugin_clear_book_cache( $post_id ) {
	delete_transient( 'myplugin_book_' . $post_id );
}

Список изменений

С версии 5.1.0 Введена.

Где вызывается хук

wp_insert_post()
edit_post_(post_type)
WP_Customize_Manager::trash_changeset_post()
edit_post_(post_type)
wp_publish_post()
edit_post_(post_type)
wp_update_comment_count_now()
edit_post_(post_type)
wp-includes/post.php 5232
do_action( "edit_post_{$post->post_type}", $post_id, $post );
wp-includes/class-wp-customize-manager.php 3112
do_action( "edit_post_{$post->post_type}", $post->ID, $post );
wp-includes/post.php 5455
do_action( "edit_post_{$post->post_type}", $post->ID, $post );
wp-includes/comment.php 3159
do_action( "edit_post_{$post->post_type}", $post_id, $post );

Где используется хук в WordPress

Использование не найдено.