Функция register_post_status()
в WordPress предоставляет разработчикам возможность создавать новые статусы для постов или изменять существующие.
Общая информация
Функция register_post_status()
позволяет добавить или изменить статус поста, предоставляя большой контроль над его отображением и поведением в системе WordPress. Эта функция должна быть вызвана во время или после события init
. Обратите внимание, что функция не добавляет статус в админ-панель автоматически, а лишь регистрирует его для последующего использования.
register_post_status( string $status, array $args = array() )
- $status (string) – Уникальное имя статуса поста. Имя должно быть не длиннее 20 символов из-за ограничений в базе данных. Пример:
'custom_status'
. - $args (array) – Ассоциативный массив параметров, определяющих поведение и внешний вид статуса. Эти параметры включают:
Параметры функции
- label (string) – Название статуса, отображаемое в интерфейсе WordPress. Пример:
'В ожидании проверки'
. - label_count (string|false) – Формат для отображения количества постов с этим статусом в админ-панели. Пример:
'В ожидании проверки <span class="count">(%s)</span>'
. - exclude_from_search (bool) – Если установлено в
true
, посты с этим статусом будут исключены из поисковых результатов. Значение по умолчанию:null
. - public (bool) – Определяет, отображаются ли посты с этим статусом на сайте. Значение по умолчанию:
null
. - internal (bool) – Указывает, предназначен ли статус только для внутреннего использования. Значение по умолчанию:
false
. - protected (bool) – Определяет, должен ли пост с этим статусом быть защищённым. Значение по умолчанию:
false
. - private (bool) – Указывает, должен ли статус быть приватным. Значение по умолчанию:
false
. - publicly_queryable (bool) – Указывает, должен ли пост с этим статусом быть доступен для публичных запросов. Значение по умолчанию: значение параметра
public
. - show_in_admin_all_list (bool) – Если установлено в
true
, посты с этим статусом будут отображаться в списке всех постов в админ-панели. Значение по умолчанию: значение параметраinternal
. - show_in_admin_status_list (bool) – Определяет, будет ли статус отображаться в списке статусов в верхней части таблицы постов. Значение по умолчанию: значение параметра
internal
. - _builtin (bool) – Указывает, является ли статус встроенным. Этот параметр используется только в ядре WordPress. Значение по умолчанию:
false
.
Пример: Создание статуса «В процессе»
Этот пример демонстрирует, как добавить статус «В процессе» для постов:
add_action( 'init', 'register_in_progress_status' );
function register_in_progress_status() {
register_post_status( 'in_progress', array(
'label' => _x( 'В процессе', 'post status', 'textdomain' ),
'public' => false,
'exclude_from_search' => true,
'show_in_admin_all_list' => true,
'show_in_admin_status_list' => true,
'label_count' => _n_noop( 'В процессе <span class="count">(%s)</span>', 'В процессе <span class="count">(%s)</span>', 'textdomain' ),
) );
}
Добавление нового статуса в мета-бокс статусов постов:
function add_custom_post_status_to_meta_box( $post_statuses ) {
$post_statuses['pending_review'] = _x( 'В ожидании проверки', 'post status', 'textdomain' );
return $post_statuses;
}
add_filter( 'display_post_states', 'add_custom_post_status_to_meta_box' );
Важные замечания
- Ограничение длины: Имя статуса поста не должно превышать 20 символов. Длинные строки будут обрезаны.
- Использование
get_post_status_object()
: Для получения информации о зарегистрированном статусе можно использовать функциюget_post_status_object()
. Это поможет вам получить объект статуса и работать с его данными.
Заключение
Функция register_post_status()
предоставляет мощный инструмент для расширения возможностей управления постами в WordPress. Используя эту функцию, разработчики могут добавлять новые статусы и адаптировать их отображение и поведение в соответствии с потребностями своих проектов. Убедитесь, что вы вызываете эту функцию в правильное время, и корректно указываете все необходимые параметры для эффективного использования.