Статус записи


Записи в WordPress могут иметь один из нескольких статусов. Статус конкретной записи определяет, как WordPress обрабатывает эту запись. Например, общедоступным записям, которые видны всем, присваивается статус publish, а черновикам — статус draft. Статус хранится в поле post_status таблицы wp_posts.

WordPress предоставляет 8 встроенных статусов, которые можно использовать. WordPress 3.0 добавил возможность создавать собственные пользовательские статусы записей и использовать их различными способами.

Рабочий процесс

WordPress предоставляет встроенные функции, позволяющие некоторым пользователям (в зависимости от их ролей и возможностей) проверять содержимое, отправленное на сайт, до его публикации. Это обычно называется “рабочим процессом”. Функции рабочего процесса WordPress используют значение поля post_status записи, чтобы определить, на каком этапе рабочего процесса в данный момент находится запись.

Большинство пользователей уже знакомы как минимум с двумя состояниями рабочего процесса:

  • Опубликованным записям, видимым всем (включая пользователей, вышедших из системы), присваивается publish статус.
  • Черновикам, которые ещё не опубликованы, присваивается draft статус.

Внутри WordPress устанавливает для записи статус publish, когда вы нажимаете кнопку “Опубликовать”, и устанавливает статус draft, когда вы нажимаете кнопку “Сохранить черновик”. Аналогично, если на вашем сайте есть пользователи, которым предоставлена edit_posts возможность, но не предоставлена publish_posts возможность, то при создании новой записи WordPress покажет кнопку “Отправить на проверку” вместо кнопки “Опубликовать”. В этом случае WordPress присваивает созданной таким пользователем записи pending статус, когда пользователь нажимает эту кнопку.

Статус записи также может быть установлен на экране администрирования и экране добавления новых записей любым пользователем, обладающим необходимой возможностью для присвоения записи указанного статуса. Внутри все эти записи хранятся в одном месте (в таблице wp_posts) и различаются по столбцу с именем post_status.

Статусы по умолчанию

По умолчанию WordPress использует 8 основных статусов записей.

Опубликовано

Видно всем. (publish)

Будущее

Запланировано к публикации в будущем. (future)

Черновик

Незавершённая запись, видимая любому пользователю с соответствующей ролью пользователя. (draft)

На утверждении

Ожидает публикации пользователем с возможностью publish_posts (обычно пользователем, которому присвоена роль редактора ). (pending)

Личное

Видно только пользователям WordPress с уровнем администратора. (private)

Корзина

Записям в корзине присваивается статус trash. (trash)

Автоматический черновик

Редакции, которые WordPress автоматически сохраняет во время редактирования. (auto-draft)

Наследуемое

Используется с дочерней записью (например, с вложениями и редакциями), чтобы определить фактический статус на основе родительской записи. (inherit)

Пользовательский статус

ВНИМАНИЕ:

Эта функция НЕ добавляет зарегистрированный статус записи на экран администрирования. Эта возможность будет реализована в будущем. Обратитесь к задаче Trac №12706.

Рассмотрите возможность использования хука действия post_submitbox_misc_actions для добавления этого параметра.

Пользовательский статус — это статус записи, который вы определяете самостоятельно.

Добавление пользовательского статуса в WordPress выполняется с помощью функции register_post_status(). Эта функция позволяет определить статус записи и способ его работы в WordPress.

Вот простой пример добавления пользовательского статуса записи под названием “Unread”:

function custom_post_status(){
	register_post_status( 'unread', array(
		'label'                     => _x( 'Unread', 'post' ),
		'public'                    => true,
		'exclude_from_search'       => false,
		'show_in_admin_all_list'    => true,
		'show_in_admin_status_list' => true,
		'label_count'               => _n_noop( 'Unread (%s)', 'Unread (%s)' ),
	) );
}
add_action( 'init', 'custom_post_status' );

Ресурсы

Связанные материалы

Документация по коду

  • Функция: get_post_status() – Получение статуса записи на основе ID записи.