Функция get_post_stati()
в WordPress предоставляет возможность получить список статусов постов, которые могут быть использованы для различных операций, таких как фильтрация или отображение информации о постах. Она возвращает статусы в виде массива имен или объектов, что позволяет разработчикам легко управлять состояниями постов.
get_post_stati( array|string $args = array(), string $output = ‘names’, string $operator = ‘and’ ): string[]|stdClass[]
Функция работает на основе глобальной переменной $wp_post_statuses
, которая содержит все доступные статусы постов, представленные в виде массива объектов. Статусы могут включать такие значения, как publish
, draft
, pending
, и другие.
Параметры
$args
(необязательный, array|string) — Массив или строка аргументов статусов, которые необходимо фильтровать. По умолчанию — пустой массив.$output
(необязательный, string) — Тип возвращаемого значения:'names'
для имен статусов или'objects'
для объектов статусов. По умолчанию —'names'
.$operator
(необязательный, string) — Логическая операция для выполнения:'or'
означает, что достаточно, чтобы один из элементов соответствовал;'and'
означает, что все элементы должны совпадать. По умолчанию —'and'
.
Возвращаемое значение
string[]|stdClass[]
— Массив имен статусов или массив объектов статусов, в зависимости от параметра$output
.
Пример 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([], 'objects');
/* $stati будет содержать массив объектов:
Array
(
[publish] => stdClass Object
(
[label] => Published
[name] => publish
...
)
[future] => stdClass Object
(
[label] => Scheduled
[name] => future
...
)
[draft] => stdClass Object
(
[label] => Draft
[name] => draft
...
)
// и так далее для остальных статусов
)
*/
Пример 3: Фильтрация статусов по параметрам
Здесь мы получаем только те статусы, которые имеют параметр publicly_queryable
, то есть те, которые могут участвовать в поиске на сайте:
$stati = get_post_stati(['publicly_queryable' => true], 'names');
/* $stati будет содержать:
Array(
[publish] => publish
)
*/
Пример 4: Использование оператора для фильтрации
В этом примере мы используем параметры $args
и $operator
, чтобы показать, как они работают вместе. Мы сначала применим оператор 'or'
, а затем 'and'
для получения статусов:
// Используем оператор 'or'
$stati_or = get_post_stati(
['show_in_admin_status_list' => true, 'protected' => true],
'names',
'or'
);
/* $stati_or будет содержать:
Array (
[publish] => publish
[future] => future
[draft] => draft
[pending] => pending
[private] => private
[trash] => trash
)
*/
// Теперь используем оператор 'and'
$stati_and = get_post_stati(
['show_in_admin_status_list' => true, 'protected' => true],
'names',
'and'
);
/* $stati_and будет содержать:
Array (
[future] => future
[draft] => draft
[pending] => pending
)
*/
Заключение
Функция get_post_stati()
— это мощный инструмент для работы с состояниями постов в WordPress. Она предоставляет гибкость в получении необходимых данных о статусах, что позволяет разработчикам лучше управлять контентом на сайте. Возможность фильтрации статусов и получения как имен, так и объектов делает эту функцию полезной в различных сценариях разработки.