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

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

  1. transition_post_status,
  2. {старый_статус}_to_{новый_статус},
  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 устарели и должны быть заменены на соответствующие новые аналоги.

Старый Новый аналог
private_to_published private_to_publish
publish_future_post future_to_publish

Источник: misha.blog

Миша Рудрастых

Путешествует по миру и рассказывает всем о WordPress лично, у себя в блогах и на курсах в Санкт-Петербурге. Умеет просто объяснять сложные вещи, делает это красиво. Организовывает неплохие WordCamp's, но совсем не умеет слушать чужие доклады.

Добавить комментарий

%d такие блоггеры, как: