wp_list_pluck()WP 3.1.0

Собирает в массив указанное поле из вложенных массивов многомерного массива.

В функцию предается массив элементами которого являются массивы или объекты. Во втором параметре указывается поле вложенных массивов/объектов, которое нужно собрать из каждого массива/объекта. Функция собирает все поля из списка массивов/объектов и возвращает массив с собранными полями.

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

В PHP 5.5 появилась встроенная функция array_column(), которая делает тоже что wp_list_pluck(), только она не отставляет ключи исходного массива, а возвращает индексный массив:

array_column( $list, $field, $index_key )

См. описание на офф сайте.

Работает на раннем этапе загрузки WordPress, еще до константы SHORTINIT.

Работает на основе: WP_List_Util::pluck()
1 раз — 0.00001 сек (скорость света) | 50000 раз — 0.45 сек (очень быстро)

Хуков нет.

Возвращает

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

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

wp_list_pluck( $list, $field, $index_key );
$list(массив) (обязательный)
Массив объектов или массивов.
$field(строка) (обязательный)
Название поля вложенного объекта или массива, которое нужно вытаскивать и добавлять в итоговый массив.
$index_key(строка)
Название поля массива, которое нужно использовать как ключ для возвращаемого массива. С версии 4.0
По умолчанию: null

Примеры

Видео с примерами

0

#1 Пример работы wp_list_pluck()

Этот пример показывает, как функция собирает поля вложенных в массив массивов. Предположим у нас есть массив массивов из которого нам нужно получить все значение поля name:

// Имеющийся массив
$foods = array(

	6 => array(
		'name'  => 'Банан',
		'color' => 'Желтый',
	),
	9 => array(
		'name'  => 'Киви',
		'color' => 'Зеленый',
	),
	1 => array(
		'name'  => 'Мандарин',
		'color' => 'Оранжевый',
	),
	3 => array(
		'name'  => 'Яблоко',
		'color' => 'Красный',
	),
);

// Соберем все поля
$food_names = wp_list_pluck( $foods, 'name' );

/* $food_names будет содержать:
Array
(
	[6] => Банан
	[9] => Киви
	[1] => Мандарин
	[3] => Яблоко
)
*/

// Если указать третий параметр
$food_names = wp_list_pluck( $foods, 'name', 'color' );

/* $food_names будет содержать:
Array
(
	[Желтый] => Банан
	[Зеленый] => Киви
	[Оранжевый] => Мандарин
	[Красный] => Яблоко
)
*/
0

#2 Работа с объектами

Этот пример более насущий для WP и показывает, как собрать все названия постов полученных через get_posts() в один массив:

// Получаем посты
$posts = get_posts();

// Собираем поля post_title в массив
$posts_titles = wp_list_pluck( $posts, 'post_title' );

// $posts_titles содержит подобный массив:
Array
(
	[0] => 10 платных тем для интернет-магазина на WordPress
	[1] => Мониторинг несуществующих страниц (плагин "404 Error Logger")
	[2] => WP-Cumulus: 3D облако меток на flash (улучшенная русская версия)
	[3] => 10 способов изменить RSS-ленту в WordPress
	[4] => Плагин Webmaster Yandex для Wordpress
)
0

#3 Указание ключа из вложенного массива

Допустим у нас есть такой массив:

$foods = array(
	array(
		'id'  => 4,
		'name'  => 'Banana',
		'color' => 'Yellow',
	),
	array(
		'id'  => '5',
		'name'  => 'Apple',
		'color' => 'Red',
	),
	array(
		'id'  => 2,
		'name'  => 'Lettuce',
		'color' => 'Green',
	),
	array(
		'id'  => '7',
		'name'  => 'Apple',
		'color' => 'Red',
	),
);

И нам нужно получить все поля name и в итоговом массиве в качестве ключей нужно использовать поле id:

$food_names = wp_list_pluck( $foods, 'name', 'id' );

/* Получим
array(
	4 => 'Banana',
	5 => 'Apple',
	2 => 'Lettuce',
	7 => 'Apple'
);
*/

Список изменений

С версии 3.1.0 Введена.
С версии 4.0.0 $index_key parameter added.
С версии 4.7.0 Uses WP_List_Util class.

Код wp_list_pluck() WP 6.5.2

function wp_list_pluck( $input_list, $field, $index_key = null ) {
	if ( ! is_array( $input_list ) ) {
		return array();
	}

	$util = new WP_List_Util( $input_list );

	return $util->pluck( $field, $index_key );
}