wp_list_pluck()
Собирает в массив указанное поле из вложенных массивов многомерного массива.
В функцию предается массив элементами которого являются массивы или объекты. Во втором параметре указывается поле вложенных массивов/объектов, которое нужно собрать из каждого массива/объекта. Функция собирает все поля из списка массивов/объектов и возвращает массив с собранными полями.
Смотрите также похожую функцию: wp_list_filter() - Фильтрует массив объектов и получает из массива те объекты, которые подходят по указанным параметрам (key=>value).
В PHP 5.5 появилась встроенная функция array_column(), которая делает тоже что wp_list_pluck(), только она не отставляет ключи исходного массива, а возвращает индексный массив:
array_column( $list, $field, $index_key )
Работает на раннем этапе загрузки WordPress, еще до константы SHORTINIT.
Хуков нет.
Возвращает
Массив
. Массив с собранными полями. Если не удалось получить данные, то пустой массив array().
Использование
wp_list_pluck( $list, $field, $index_key );
- $list(массив) (обязательный)
- Массив объектов или массивов.
- $field(строка) (обязательный)
- Название поля вложенного объекта или массива, которое нужно вытаскивать и добавлять в итоговый массив.
- $index_key(строка)
- Название поля массива, которое нужно использовать как ключ для возвращаемого массива. С версии 4.0
По умолчанию: null
Примеры
Видео с примерами
#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 ( [Желтый] => Банан [Зеленый] => Киви [Оранжевый] => Мандарин [Красный] => Яблоко ) */
#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' ); */
Список изменений
С версии 3.1.0 | Введена. |
С версии 4.0.0 | $index_key parameter added. |
С версии 4.7.0 | Uses WP_List_Util class. |
Код wp_list_pluck() wp list pluck WP 6.6.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 ); }