publish_post
Позволяет сделать что-либо, когда пост (запись типа post) публикуется или обновляется.
Этот хук срабатывает всегда, а НЕ только при публикации поста. Т.е. сработает:
- При первом переходе поста в статус опубликовано (publish) из другого статуса.
- А также при последующих обновлениях уже опубликованного поста.
wp_insert_post() вызывает этот хук всегда. Поэтому, если нужно делать что-либо один раз, только когда пост публикуется (а не обновляется), используйте:
-
Хуки из семейства (old_status)_to_(new_status):
new_to_publish
- при первой публикации новой записи, например если запись добавляется функцией wp_insert_post().auto-draft_to_publish
- при первой публикации новой записи из админки WP.draft_to_publish
- при публикации, сохраненной записи.future_to_publish
- при публикации запланированной записи.
- Или хук transition_post_status - срабатывает при любом обновлении записи или смене статуса.
Для страниц (записей типа page) этот хук будет иметь название publish_page. Для вложений publish_attachment и т.д.
Это один из вариантов динамического хука (new_status)_(post_type)
Использование
add_action( 'publish_post', 'wp_kama_publish_post_action', 10, 3 ); /** * Function for `publish_post` action-hook. * * @param int $post_id Post ID. * @param WP_Post $post Post object. * @param string $old_status Old post status. * * @return void */ function wp_kama_publish_post_action( $post_id, $post, $old_status ){ // action... }
- $post_id(int)
- ID поста.
- $post(WP_Post)
- Объект поста WP_Post.
- $old_status(строка) (WP 5.9.0)
- Старый статус поста.
Примеры
#1 Делаем что-либо для опубликованного поста
Этот пример показывает как сделать что-либо, когда пост публикуется или обновляется пост со статусом publish:
add_action( 'publish_post', 'publish_post_action', 10, 2 ); function publish_post_action( $post_id, $post ){ // делаем что-то при публикации поста }
Список изменений
С версии 2.3.0 | Введена. |
С версии 5.9.0 | Added $old_status parameter. |
Где вызывается хук
publish_post
wp-includes/post.php 5748
do_action( "{$new_status}_{$post->post_type}", $post->ID, $post, $old_status );
Где используется хук в WordPress
wp-includes/default-filters.php 288
add_action( $action, '_delete_option_fresh_site', 0 );
wp-includes/default-filters.php 420
add_action( 'publish_post', '_publish_post_hook', 5, 1 );