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

wp_list_pluck() WP 3.1

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

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

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

В PHP 5.5 появилась встроенная функция, которая делает тоже что wp_list_pluck():

array_column( $list, $field, $index_key )

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

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

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

Хуков нет.

Возвращает

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

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

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

Примеры

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

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

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

// Имеющийся массив
$foods = array(
	array(
		'name'  => 'Банан',
		'color' => 'Желтый',
	),
	array(
		'name'  => 'Киви',
		'color' => 'Зеленый',
	),
	array(
		'name'  => 'Мандарин',
		'color' => 'Оранжевый',
	),
	array(
		'name'  => 'Яблоко',
		'color' => 'Красный',
	),
);

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

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

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

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

#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
)

#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'
);
*/

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

<?php
function wp_list_pluck( $list, $field, $index_key = null ) {
	$util = new WP_List_Util( $list );
	return $util->pluck( $field, $index_key );
}

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

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

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

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

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

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