WP_LIST_PLUCK(): извлечение полей из списка объектов.

WP_LIST_PLUCK() │ WP 3.1.0

Функция WP_LIST_PLUCK() позволяет извлечь определённое поле из каждого объекта в списке. Она работает аналогично функции array_column() (PHP 5.5), но поддерживает также объекты.

Характеристики

  • Производительность:

    • 1 раз — 0.00001 сек (практически мгновенно)
    • 50,000 раз — 0.45 сек (очень быстро)
  • Нет хуков.

Возврат

Функция возвращает массив найденных значений. Если установлен параметр $index_key, то возвращается массив, где ключи соответствуют значению этого параметра. Если $index_key равен null, сохраняются ключи из исходного списка $input_list.

Синтаксис использования

wp_list_pluck( $input_list, $field, $index_key );

Параметры:

  • $input_list (массив) — обязательный. Список объектов или массивов.
  • $field (строка или число) — обязательный. Поле объекта, которое будет извлечено.
  • $index_key (строка или число) — поле объекта, которое будет использовано в качестве ключей для нового массива. По умолчанию: null.

Примеры использования

Пример 1: Получение всех названий

Рассмотрим массив, содержащий блюда:

$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: Работа с объектами

Рассмотрим пример получения всех заголовков постов, полученных с помощью функции 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] => Плагин вебмастера Яндекс для WordPress
)
*/

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

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

$foods = array(
    array('id' => 4, 'name' => 'Банан', 'color' => 'Жёлтый'),
    array('id' => '5', 'name' => 'Яблоко', 'color' => 'Красный'),
    array('id' => 2, 'name' => 'Салат', 'color' => 'Зелёный'),
    array('id' => '7', 'name' => 'Яблоко', 'color' => 'Красный'),
);

// Извлечение названий с использованием id как ключей
$food_names = wp_list_pluck( $foods, 'name', 'id' );

/* Результат будет:
array(
    4 => 'Банан',
    5 => 'Яблоко',
    2 => 'Салат',
    7 => 'Яблоко'
);
*/

Изменения

  • С версии 3.1.0 — была внедрена.
  • С версии 4.0.0 — добавлен параметр $index_key.
  • С версии 4.7.0 — используется класс WP_List_Util.

Код функции

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 );
}

Таким образом, функция wp_list_pluck() будет полезна для работы с данными в формате массивов и объектов в WordPress, позволяя легко извлекать нужные поля.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *