publish_post хук-подіяWP 2.3.0

Дозволяє зробити щось, коли пост (запис типу 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)

Використання

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)
Старий статус посту.

Приклади

0

#1 Робимо щось для опублікованого посту

Цей приклад показує, як зробити щось, коли пост публікується або оновлюється пост зі статусом publish :

add_action( 'publish_post', 'publish_post_action', 10, 2);

function publish_post_action( $post_id, $post ){

	// робимо щось при публікації посту
}

список змін

З версії 2.3.0Введено.
З версії 5.9.0Added $old_status parameter.

Де викликається хук

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *