wp_list_pluck()
Збирає в масив зазначене поле вкладених масивів багатовимірного масиву.
У функцію віддається масив елементами якого є масиви чи об’єкти. У другому параметрі вказується поле вкладених масивів/об’єктів, які потрібно зібрати з кожного масиву/об’єкта. Функція збирає всі поля зі списку масивів/об’єктів та повертає масив із зібраними полями.
Дивіться також схожу функцію: 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()
(швидкість світла) | 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( 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.0.2
function wp_list_pluck( $list, $field, $index_key = null ) { if ( ! is_array( $list ) ) { return array(); } $util = new WP_List_Util( $list ); return $util->pluck($field, $index_key); }