- Что такое wp:status?
- Разбор стандартных статусов
- Создание пользовательских статусов
- Пример: Регистрация нового статуса «На проверке»
- Добавление пользовательских статусов в интерфейс админки
- Работа с API для статусов постов
- Проверка статусов в шаблонах:
- Работа с REST API:
- Типичные ошибки и их решение
- Примеры практического использования
- Заключение
В WordPress статусы постов (‘post statuses’) играют ключевую роль в управлении содержимым сайта. Они позволяют определить, в каком состоянии находится запись – готова ли она для публикации, ожидает ли модерации или сохранена как черновик. Правильное понимание статусов помогает эффективно работать с контентом и улучшить процесс администрирования.
Эта статья предназначена для тех, кто хочет глубже разобраться в статусах постов WordPress, узнать, как они работают, и научиться настраивать их под свои задачи.
Что такое wp:status
?
Статусы постов – это свойство записи, которое определяет её видимость и доступность на сайте. В базе данных WordPress эта информация хранится в поле post_status
таблицы wp_posts
. Например, опубликованный пост будет иметь статус publish
, а черновик – draft
.
WordPress включает несколько стандартных статусов, таких как:
publish
– опубликованная запись.draft
– черновик.pending
– ожидает модерации.private
– доступен только авторизованным пользователям.future
– запланированная публикация.trash
– запись удалена.auto-draft
– автоматически созданный черновик.inherit
– статус вложений (например, медиафайлов).
Разбор стандартных статусов
Рассмотрим каждый статус подробно:
publish
– опубликованная запись- Видима всем посетителям сайта.
- Изменения вступают в силу сразу после сохранения.
- Используется для постов, которые полностью готовы и одобрены.
draft
– черновик- Запись сохраняется как незавершённая работа.
- Доступна только автору и администраторам.
- Удобно для подготовки материалов.
pending
– ожидает модерации- Используется в многоавторских блогах.
- Автор пишет запись, но для публикации требуется одобрение редактора.
private
– приватный пост- Доступен только авторизованным пользователям с нужными правами.
- Полезен для внутреннего контента, например, инструкций для команды.
future
– запланированная публикация- Позволяет автоматически публиковать записи в заданное время.
- Используется для контент-планирования.
trash
– удалённые записи- Перемещённые в корзину записи можно восстановить или окончательно удалить.
- Записи в корзине автоматически удаляются через 30 дней.
auto-draft
– автоматический черновик- Создаётся системой при создании новой записи.
- Предназначен для предотвращения потери данных.
inherit
– вложения- Используется для медиафайлов.
- Статус наследуется от родительского поста.
Создание пользовательских статусов
WordPress позволяет добавлять собственные статусы постов. Это полезно для специфичных задач, таких как “Архивирован” или “На проверке”.
Пример: Регистрация нового статуса «На проверке»
add_action('init', function() {
register_post_status('review', [
'label' => 'На проверке',
'public' => true,
'show_in_admin_all_list' => true,
'show_in_admin_status_list' => true,
'label_count' => _n_noop('На проверке (%s)', 'На проверке (%s)'),
]);
});
После регистрации статус можно назначить программно или через интерфейс админки (с дополнительной настройкой).
Добавление пользовательских статусов в интерфейс админки
Чтобы пользовательский статус появился в выпадающем списке админки, используйте следующий код:
add_filter('display_post_states', function($post_states, $post) {
if ($post->post_status === 'review') {
$post_states['review'] = 'На проверке';
}
return $post_states;
}, 10, 2);
Работа с API для статусов постов
WordPress предоставляет функции для получения и установки статусов постов:
- Получение статуса:
get_post_status($post_id)
возвращает статус поста. - Установка статуса:
wp_update_post(['ID' => $post_id, 'post_status' => 'draft']);
.
Проверка статусов в шаблонах:
if (get_post_status($post_id) === 'publish') {
echo 'Этот пост опубликован';
}
Работа с REST API:
Статусы постов можно использовать через REST API. Пример запроса:
GET https://example.com/wp-json/wp/v2/posts?status=draft
Типичные ошибки и их решение
- Посты, застрявшие в статусе
auto-draft
- Решение: Удаляйте лишние черновики через админку или программно с помощью WP-CLI.
- Ошибки при публикации запланированных постов
- Причина: Сервер некорректно обрабатывает CRON-задачи.
- Решение: Проверьте настройку WP_CRON и активируйте пинг для сайта.
- Неправильное использование пользовательских статусов
- Решение: Всегда регистрируйте статусы корректно и добавляйте их в интерфейс админки.
Примеры практического использования
- Ведение черновиков статей
- Используйте статус
draft
для подготовки материалов, которые ещё не готовы к публикации.
- Используйте статус
- Модерация контента
- Статус
pending
позволяет эффективно модерировать записи в блогах с несколькими авторами.
- Статус
- Планирование публикаций
- Запланируйте публикацию статей на будущее с помощью статуса
future
.
- Запланируйте публикацию статей на будущее с помощью статуса
- Архивирование старого контента
- Создайте пользовательский статус “Архив” для материалов, которые больше не актуальны.
Заключение
Статусы постов WordPress – мощный инструмент для управления контентом. Их правильное использование упрощает администрирование и помогает организовать рабочие процессы. Вы можете использовать встроенные статусы или создавать свои собственные для решения специфических задач. Экспериментируйте и настраивайте WordPress под ваши потребности!
Пример задачи для практики: создайте пользовательский статус “Архивирован”, добавьте его в интерфейс админки и настройте отображение архивированных записей на отдельной странице сайта.