Хуки при смене статусов постов

Владислав Белецкий
Владислав Белецкий .
Категория:
Комментариев: 0

В версии WordPress 2.3 появилось три вида потрясающих хуков, которые запускаются при смене статуса поста:

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

А сейчас остановимся на каждом из них поподробнее.

Хук transition_post_status

transition_post_status имеет три параметра:

$new_status
Новый статус поста.
$old_status
Старый статус поста.
$post
Объект поста.

Пример 1. Запускаем функцию при любой смене статуса

function ljubaja_smena_statusa( $new_status, $old_status, $post ) {
	// по сути всё, что нам нужно, это проверить, чтобы старый статус не был равен новому
	if ( $new_status != $old_status ) {
		// дальше выполняем необходимые действия
	}
}
add_action(  'transition_post_status',  'ljubaja_smena_statusa', 10, 3 );

Хук {старый_статус}_to_{новый_статус}

Этот хук имеет только один параметр — объект поста, как видите, статусы задаются непосредственно в самом хуке. Вариантов может быть множество future_to_publish, pending_to_future, draft_to_publish и так далее.

Вот ссылка, где перечислены все стандартные статусы постов.

Пример 2. Запускаем функцию, когда запланированный пост отправляется в публикацию

function v_publikaciju( $post ) {
	// дальше выполняем необходимые действия
}
add_action(  'future_to_publish',  'v_publikaciju', 10, 1 );

Хук {новый_статус}_{тип_записи}

Данный тип хуков очень часто встречается в темах и плагинах WordPress. Уверен, вы уже не раз работали с его разновидностями, например хук publish_post срабатывает при публикации записи, future_post — когда запись меняет свой статус на «Запланированная».

Также вместо post можно указать и другой тип поста, например page (страницы), тогда хук publish_page будет срабатывать уже при публикации страниц.

Пример 3. Функция, срабатывающая при публикации страниц

function publikacija_stranic( $ID, $post ) {
	// хук имеет два параметра - ID поста и объект поста
}
add_action(  'publish_page',  'publikacija_stranic', 10, 2 );

Устаревшие хуки

С версии 2.3 хуки private_to_published и publish_future_post устарели и должны быть заменены на соответствующие новые аналоги.

Смотрите также

Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии