get_post_stati()
Получает все существующие статусы постов в виде массива имен или массива объектов.
Работает на основе глобальной переменной $wp_post_statuses, которая содержит полную информацию о статусах, в виде массива объектов.
Хуков нет.
Возвращает
Строку[]|stdClass[]. массив имен или массив объектов, зависит от параметра $output.
Использование
get_post_stati( $args, $output, $operator );
- $args(строка/массив)
Массив
key=>valueдля фильтрации статусов. Указанные ключ и значение должны должны встречаться в получаемых статусах, чтобы статус попал в список.По умолчанию: array()
- $output(строка)
Выводить имена или объекты.
names- получить имена.objects- получить объекты.
По умолчанию: 'names'
- $operator(строка)
Логический оператор фильтра $args.
or― будет искать любой параметр из указанных в $args у статусов.and― будет искать одновременно все указанные параметры у статуса.
По умолчанию: 'and'
Примеры
#1 Получим объекты всех видов статусов на блоге:
$stati = get_post_stati( [], 'objects' );
$stati будет содержать:
#2 Получим имена всех видов статусов на блоге:
$stati = get_post_stati(); /* $stati = Array ( [publish] => publish [future] => future [draft] => draft [pending] => pending [private] => private [trash] => trash [auto-draft] => auto-draft [inherit] => inherit ) */
#3 Пример, показывающий как работает параметр $operator
Укажем 2 параметра массиву $args. or - выведет статусы у которых встречается либо первый либо второй, а and выведет статусы у которых встречаются оба параметра:
$stati = get_post_stati( [ 'show_in_admin_status_list'=>true, 'protected'=>true ], 'names', 'or' ); /* $stati = Array ( [publish] => publish [future] => future [draft] => draft [pending] => pending [private] => private [trash] => trash ) */
и тоже самое с "and":
$stati = get_post_stati( [ 'show_in_admin_status_list'=>true, 'protected'=>true ], 'names', 'and' ); /* $stati = Array ( [future] => future [draft] => draft [pending] => pending ) */
#4 Получим статусы с нужными параметрами (фильтр статусов)
В этом примере мы получим имена статусов у которых установлен параметр publicly_queryable, т.е. те статусы, которые участвуют в поиске по сайту:
$stati = get_post_stati( [ 'publicly_queryable'=>true ], 'names' ); /* $stati = Array( [publish] => publish ) */
Заметки
- Смотрите: register_post_status()
- Global. stdClass[]. $wp_post_statuses List of post statuses.
Список изменений
| С версии 3.0.0 | Введена. |
Код get_post_stati() get post stati WP 6.9
function get_post_stati( $args = array(), $output = 'names', $operator = 'and' ) {
global $wp_post_statuses;
$field = ( 'names' === $output ) ? 'name' : false;
return wp_filter_object_list( $wp_post_statuses, $args, $operator, $field );
}