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_attachment і т.д.
Це один із варіантів динамічного хука
(new_status)_(post_type)
(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 об'єкт. * @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. |
Де викликається хук
Де використовується хук у WordPress
wp-includes/default-filters.php 276
add_action( $action, '_delete_option_fresh_site', 0);
wp-includes/default-filters.php 411
add_action( 'publish_post', '_publish_post_hook', 5, 1);