Функция wp_list_pluck()
в WordPress позволяет извлекать определённое поле из каждого объекта или массива в заданном массиве. Это упрощает выборку нужных значений из многомерных массивов или объектов, что особенно полезно при работе с массивами данных, полученными из базы данных.
wp_list_pluck( array $input_list, int|string $field, int|string $index_key = null ): array
- $input_list (обязательный) — Массив объектов или массивов, из которых требуется извлечь данные.
- $field (обязательный) — Название поля, которое нужно извлечь из каждого объекта или массива.
- $index_key (необязательный) — Название поля, которое будет использовано как ключ для результирующего массива. По умолчанию:
null
.
Возвращаемое значение
Возвращается массив значений, извлечённых из указанного поля. Если указан параметр $index_key
, результат будет массивом, где ключи соответствуют этому полю. Если $index_key
не указан, исходные ключи $input_list
сохраняются в результатах.
Пример 1: Извлечение поля из массива массивов
Рассмотрим массив данных о продуктах, из которого нужно извлечь только названия:
$foods = array(
array('name' => 'Ананас', 'color' => 'Жёлтый'),
array('name' => 'Персик', 'color' => 'Оранжевый'),
array('name' => 'Виноград', 'color' => 'Фиолетовый'),
array('name' => 'Яблоко', 'color' => 'Красный'),
);
// Извлечение поля 'name'
$food_names = wp_list_pluck($foods, 'name');
/* Результат:
Array(
[0] => 'Ананас',
[1] => 'Персик',
[2] => 'Виноград',
[3] => 'Яблоко'
)
*/
Пример 2: Использование $index_key
для создания ассоциативного массива
Допустим, у нас есть тот же массив, и мы хотим использовать поле color
как ключ для результирующего массива:
$food_names = wp_list_pluck($foods, 'name', 'color');
/* Результат:
Array(
'Жёлтый' => 'Ананас',
'Оранжевый'=> 'Персик',
'Фиолетовый'=> 'Виноград',
'Красный' => 'Яблоко'
)
*/
⚠️ Замечание: Если значения поля
$index_key
повторяются, последние значения заменяют предыдущие.
Пример 3: Извлечение полей из объектов
Эта функция также поддерживает массив объектов. Например, предположим, что у нас есть массив постов, полученный с помощью get_posts()
:
// Получаем массив объектов постов
$posts = get_posts(array('posts_per_page' => 5));
// Извлечение названий постов
$post_titles = wp_list_pluck($posts, 'post_title');
/* Результат (пример):
Array(
[0] => 'Как настроить WordPress',
[1] => 'Советы по SEO для WordPress',
[2] => 'Обзор лучших плагинов безопасности',
[3] => 'Оптимизация изображений на сайте',
[4] => 'Создание резервной копии в WordPress'
)
*/
Пример 4: Извлечение значений с уникальными ключами
Рассмотрим более сложный массив, где требуется извлечь названия продуктов с уникальными идентификаторами:
$products = array(
array('id' => 101, 'name' => 'Шоколад', 'category' => 'Сладости'),
array('id' => 205, 'name' => 'Торты', 'category' => 'Сладости'),
array('id' => 350, 'name' => 'Хлеб', 'category' => 'Выпечка'),
);
// Извлечение поля 'name' с использованием 'id' как ключа
$product_names = wp_list_pluck($products, 'name', 'id');
/* Результат:
Array(
[101] => 'Шоколад',
[205] => 'Торты',
[350] => 'Хлеб'
)
*/
Заключение
Функция wp_list_pluck()
— удобный инструмент для работы с многомерными массивами и массивами объектов в WordPress, позволяющий выбирать конкретные поля и создавать массивы с определёнными ключами.