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

wp_filter_object_list() WP 3.0

Фильтрует массив объектов по указанным параметрам (key=>value) и получает объекты из переданного массива, которые подходят по нужным параметрам.

Используется в: get_post_stati().
Работает на основе: WP_List_Util()

Хуков нет.

Возвращает

массив объектов или массив полей. Если не удалось получить данные, то пустой массив: array().

Использование

wp_filter_object_list( $list, $args, $operator, $field );
$list(массив) (обязательный)
Массив объектов, который с которым будем работать.
По умолчанию: нет
$args(массив)
Параметры по которым нужно выбирать объекты. Указываем в массиве key => val.
По умолчанию: array()
$operator(строка)
Указывает как обрабатывать указанные в $args параметры. Может быть: OR или AND. or - будет искать объекты у которых есть любой из указанных параметров. and - будет искать объекты у которых есть одновременно все указанные параметры.
По умолчанию: and
$field(строка)
Поле объекта которое нужно выводить, вместо вывода всего объекта.
По умолчанию: false

Примеры

#1. Выбор объектов по указанным параметрам

Предположим мы сделали выборку постов и у нас есть массив объектов постов $posts. Который содержит вот такие объекты:

Array
(
	[0] => WP_Post Object (
			[ID] => 2773
			[post_author] => 1
			[post_date] => 2013-06-12 21:09:57
			[post_date_gmt] => 2013-06-12 21:09:57
			[post_content] => контент статьи
			[post_title] => Огромный текст для примера работы скрипта "содержание"
			[post_excerpt] => 
			[post_status] => publish
			[comment_status] => open
			[ping_status] => open
			[post_password] => 
			[post_name] => post_name_ogromniy_text
			[to_ping] => 
			[pinged] => 
			[post_modified] => 2013-07-30 21:40:25
			[post_modified_gmt] => 2013-07-30 21:40:25
			[post_content_filtered] => 
			[post_parent] => 0
			[guid] => http://wptest.ru/?p=2773
			[menu_order] => 0
			[post_type] => post
			[post_mime_type] => 
			[comment_count] => 0
	)
	[1] => WP_Post Object ( ... )
)

Нам нужно из этого массива получить ID постов у которых автор=1 и комментарии открыты (comment_status=open). Воспользуемся wp_filter_object_list():

$args = array('post_author'=>'1', 'comment_status'=>'open');

$filtered_posts = wp_filter_object_list( $posts, $args, 'or', 'ID' );

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

Array
(
	[0] => 19
	[1] => 23
	[2] => 34
	[3] => 45
	[4] => 56
	[5] => 67
	[6] => 78
)

Параметр "or" говорит функции, чтобы выбирались посты с post_author=1 или comment_status=open. Если указать "and", то будут выбираться посты post_author=1 и comment_status=open.

'ID' означает, что надо вернуть массив со значениями поля ID у объекта. Если не указать этот параметр, то будет возвращен весь объект, а не конкретное его поле.

Еще примеры

Еще примеры смотрите в описании функции get_post_stati().

Код wp filter object list: wp-includes/functions.php WP 4.8.2

<?php
function wp_filter_object_list( $list, $args = array(), $operator = 'and', $field = false ) {
	if ( ! is_array( $list ) ) {
		return array();
	}

	$util = new WP_List_Util( $list );

	$util->filter( $args, $operator );

	if ( $field ) {
		$util->pluck( $field );
	}

	return $util->get_output();
}

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

Из метки: array list help func (фильтры сортировка массивов объектов)

Еще из раздела: Вспомогательные

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

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

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