# Функция REGISTER_POST_STATUS() в WordPress
## Введение
Функция register_post_status() позволяет зарегистрировать новый статус для поста в WordPress. Важно вызывать эту функцию только после инициализации WordPress.
Эта функция помогает вам создать или изменить статус поста, используя переданные параметры. Вы можете использовать как строку для имени статуса, так и массив с дополнительными аргументами (второй параметр, который является необязательным).
Обратите внимание, что аргументы, начинающиеся с символа подчеркивания (_), не должны использоваться в плагинах и темах.
## Возврат
Функция возвращает объект, представляющий статус поста.
## Синтаксис
```php
register_post_status( $post_status, $args );
Параметры:
-
$post_status (строка) — Обязательный параметр. Имя статуса поста.
-
$args (массив|строка) — Необязательный параметр. Массив или строка с аргументами для статуса поста. По умолчанию — пустой массив.
Доступные аргументы
Вот что можно использовать в массиве $args:
-
label (true|false|string)
Описание для статуса поста, которое может быть переведено. По умолчанию — значение$post_status. -
label_count (массив|false)
Используется для предоставления единственного и множественного вариантов метки для подсчета. По умолчанию — false (используется одно и то же значение). -
exclude_from_search (true|false)
Исключать ли посты с этим статусом из результатов поиска. По умолчанию — значение переменной$internal. -
_builtin (true|false)
Является ли статус встроенным (т.е. предоставляемым ядром WordPress). По умолчанию — false. -
public (true|false)
Должны ли посты с этим статусом отображаться на сайте. По умолчанию — false. -
internal (true|false)
Для внутреннего использования только? По умолчанию — false. -
protected (true|false)
Должны ли посты с этим статусом быть защищенными? По умолчанию — false. -
private (true|false)
Должны ли посты с этим статусом быть приватными? По умолчанию — false. -
publicly_queryable (true|false)
Можно ли запрашивать посты с этим статусом публично? По умолчанию — то же, что и$public. -
show_in_admin_all_list (true|false)
Должны ли посты быть включены в элементы редактирования их типа поста? По умолчанию — наоборот значение$internal. -
show_in_admin_status_list (true|false)
Отображать ли в списке статусов с подсчетом постов в верхней части списка редактирования? По умолчанию — наоборот значение$internal. -
date_floating (true|false)
Должен ли пост иметь плавающую дату создания? По умолчанию — false.
Пример использования
Пример 1: Регистрация статуса поста «Непрочитанный»
Сначала необходимо зарегистрировать статус в действии init:
add_action( 'init', 'my_custom_post_status' );
function my_custom_post_status(){
register_post_status( 'unread', array(
'label' => _x( 'Непрочитанный', 'post' ),
'public' => true,
'exclude_from_search' => false,
'show_in_admin_all_list' => true,
'show_in_admin_status_list' => true,
'label_count' => _n_noop( 'Непрочитанный (%s)', 'Непрочитанных (%s)' ),
) );
}
Пример 2: Максимальная длина ��ля $post_status
Хотя вы можете зарегистрировать статус поста с длиной более 20 символов, вы не сможете сохранить или обновить посты с таким статусом. Метод $wpdb->process_fields() сравнивает данные и возвращает false.
global $wpdb;
$res = $wpdb->get_col_length( $wpdb->posts, 'post_status' );
print_r( $res );
/*
Array
(
[type] => char
[length] => 20
)
*/
Замечания
- Глобальный массив:
$wp_post_statuses— новый объект статуса поста добавляется в этот массив.
changelog
- С версии 3.0.0 — введена функция.