WordPress как на ладони
wordpress jino

get_post_stati() WP 3.0

Получает все существующие статусы постов в виде массива имен или массива объектов.

get_post_stati() работает на основе глобальной переменной $wp_post_statuses, которая содержит полную информацию о статусах, в виде массива объектов.

Работает на основе: wp_filter_object_list()

Хуков нет.

Возвращает

массив имен или массив объектов, зависит от параметра $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( 0, 'names' );

$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 будет содержать:

Array
(
	[publish] => stdClass Object
		(
			[label] => Published
			[label_count] => Array
				(
					[0] => Published (%s)
					[1] => Published (%s)
					[singular] => Published (%s)
					[plural] => Published (%s)
					[context] => 
					[domain] => 
				)

			[exclude_from_search] => 
			[_builtin] => 1
			[public] => 1
			[internal] => 
			[protected] => 
			[private] => 
			[publicly_queryable] => 1
			[show_in_admin_status_list] => 1
			[show_in_admin_all_list] => 1
			[name] => publish
		)

	[future] => stdClass Object
		(
			[label] => Scheduled
			[label_count] => Array
				(
					[0] => Scheduled (%s)
					[1] => Scheduled (%s)
					[singular] => Scheduled (%s)
					[plural] => Scheduled (%s)
					[context] => 
					[domain] => 
				)

			[exclude_from_search] => 
			[_builtin] => 1
			[public] => 
			[internal] => 
			[protected] => 1
			[private] => 
			[publicly_queryable] => 
			[show_in_admin_status_list] => 1
			[show_in_admin_all_list] => 1
			[name] => future
		)

	[draft] => stdClass Object
		(
			[label] => Draft
			[label_count] => Array
				(
					[0] => Draft (%s)
					[1] => Drafts (%s)
					[singular] => Draft (%s)
					[plural] => Drafts (%s)
					[context] => 
					[domain] => 
				)

			[exclude_from_search] => 
			[_builtin] => 1
			[public] => 
			[internal] => 
			[protected] => 1
			[private] => 
			[publicly_queryable] => 
			[show_in_admin_status_list] => 1
			[show_in_admin_all_list] => 1
			[name] => draft
		)

	[pending] => stdClass Object
		(
			[label] => Pending
			[label_count] => Array
				(
					[0] => Pending (%s)
					[1] => Pending (%s)
					[singular] => Pending (%s)
					[plural] => Pending (%s)
					[context] => 
					[domain] => 
				)

			[exclude_from_search] => 
			[_builtin] => 1
			[public] => 
			[internal] => 
			[protected] => 1
			[private] => 
			[publicly_queryable] => 
			[show_in_admin_status_list] => 1
			[show_in_admin_all_list] => 1
			[name] => pending
		)

	[private] => stdClass Object
		(
			[label] => Private
			[label_count] => Array
				(
					[0] => Private (%s)
					[1] => Private (%s)
					[singular] => Private (%s)
					[plural] => Private (%s)
					[context] => 
					[domain] => 
				)

			[exclude_from_search] => 
			[_builtin] => 1
			[public] => 
			[internal] => 
			[protected] => 
			[private] => 1
			[publicly_queryable] => 
			[show_in_admin_status_list] => 1
			[show_in_admin_all_list] => 1
			[name] => private
		)

	[trash] => stdClass Object
		(
			[label] => Trash
			[label_count] => Array
				(
					[0] => Trash (%s)
					[1] => Trash (%s)
					[singular] => Trash (%s)
					[plural] => Trash (%s)
					[context] => 
					[domain] => 
				)

			[exclude_from_search] => 1
			[_builtin] => 1
			[public] => 
			[internal] => 1
			[protected] => 
			[private] => 
			[publicly_queryable] => 
			[show_in_admin_status_list] => 1
			[show_in_admin_all_list] => 
			[name] => trash
		)

	[auto-draft] => stdClass Object
		(
			[label] => auto-draft
			[label_count] => Array
				(
					[0] => auto-draft
					[1] => auto-draft
				)

			[exclude_from_search] => 1
			[_builtin] => 1
			[public] => 
			[internal] => 1
			[protected] => 
			[private] => 
			[publicly_queryable] => 
			[show_in_admin_status_list] => 
			[show_in_admin_all_list] => 
			[name] => auto-draft
		)

	[inherit] => stdClass Object
		(
			[label] => inherit
			[label_count] => Array
				(
					[0] => inherit
					[1] => inherit
				)

			[exclude_from_search] => 
			[_builtin] => 1
			[public] => 
			[internal] => 1
			[protected] => 
			[private] => 
			[publicly_queryable] => 
			[show_in_admin_status_list] => 
			[show_in_admin_all_list] => 
			[name] => inherit
		)

)

#3. Отфильтруем получение статусов постов

В этом примере мы получим имена статусов у которых установлен параметр publicly_queryable, т.е. те статусы, которые участвуют в поиске по сайту:

$stati = get_post_stati( array('publicly_queryable'=>true), 'names' );

$stati будет содержать:

Array
(
	[publish] => publish
)

#4. Пример, показывающий как работает параметр $operator

Укажем 2 параметра массиву $args. or - выведет статусы у которых встречается либо первый либо второй, а and выведет статусы у которых встречаются оба параметра:

$stati = get_post_stati( 
	 array(
		   'show_in_admin_status_list'=>true,
		   'protected' => true
	 ), 'names', 'or');
/*
Array
(
	[publish] => publish
	[future] => future
	[draft] => draft
	[pending] => pending
	[private] => private
	[trash] => trash
)
*/

и тоже самое с "and":

$stati = get_post_stati( 
	 array(
		   'show_in_admin_status_list'=>true,
		   'protected' => true
	 ), 'names', 'and');
/*
Array
(
	[future] => future
	[draft] => draft
	[pending] => pending
)
*/

Код get post stati: wp-includes/post.php WP 4.8.2

<?php
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);
}

Cвязанные функции

Из метки: statuses

Еще из раздела: Остальное

Http://www.ibfsunited.com/

http://www.ibfsunited.com/ due diligence англо русско английский перевод.

ibfsunited.com

get_post_stati Комментариев нет

Здравствуйте, !

Ваш комментарий