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