Функция wp_list_sort() в WordPress: сортировка массивов по нескольким критериям

Функция wp_list_sort() в WordPress

Функция wp_list_sort() используется для сортировки списка объектов на основе одного или нескольких критериев сортировки (orderby).

Что делает функция

Функция сортирует массив объектов или массивов и возвращает отсортированный массив.

Возвращаемое значение

Функция возвращает отсортированный массив.

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

Синтаксис функции:

wp_list_sort( $input_list, $orderby, $order, $preserve_keys );

Параметры

  • $input_list (массив, обязательный): Массив объектов или массивов, который необходимо отсортировать.

  • $orderby (строка|массив): Имя поля, по которому выполняется сортировка, или массив нескольких полей для сортировки в формате $orderby => $order.

    • По умолчанию: пустой массив
  • $order (строка): Направление сортировки, может быть 'ASC' (по возрастанию) или 'DESC' (по убыванию). Используется только в том случае, если $orderby — строка.

    • По умолчанию: 'ASC'
  • $preserve_keys (логическое): Указывает, нужно ли сохранять ключи массива.

    • По умолчанию: false

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

Пример 1: Сортировка многоуровневого массива

$animals = [
    'alligator' => ['name' => 'alligator', 'class' => 'reptile'],
    'dog'       => ['name' => 'dog', 'class' => 'mammal'],
    'cat'       => ['name' => 'cat', 'class' => 'mammal'],
    'falcon'    => ['name' => 'falcon', 'class' => 'bird'],
    'bat'       => ['name' => 'bat', 'class' => 'mammal'],
];

$res = wp_list_sort($animals, 'class');
print_r($res);

/*
[
    0 => ['name' => 'falcon', 'class' => 'bird'],
    1 => ['name' => 'cat', 'class' => 'mammal'],
    2 => ['name' => 'dog', 'class' => 'mammal'],
    3 => ['name' => 'bat', 'class' => 'mammal'],
    4 => ['name' => 'alligator', 'class' => 'reptile']
]
*/

$res = wp_list_sort($animals, 'name', 'DESC');
print_r($res);

/*
[
    0 => ['name' => 'falcon', 'class' => 'bird'],
    1 => ['name' => 'dog', 'class' => 'mammal'],
    2 => ['name' => 'cat', 'class' => 'mammal'],
    3 => ['name' => 'bat', 'class' => 'mammal'],
    4 => ['name' => 'alligator', 'class' => 'reptile']
]
*/

Пример 2: Сортировка массива объектов

Допустим, мы получили записи из базы данных и хотим отсортировать их:

// Получим массив объектов, в данном случае записи постов...
$posts = get_posts(['posts_per_page' => 15]);

// Сортируем по заголовку от А до Я
$posts = wp_list_sort($posts, 'post_title', 'ASC');

// Или так же
$posts = wp_list_sort($posts, ['post_title' => 'ASC']);

Пример 3: Сортировка по нескольким полям

Функция также позволяет сортировать массивы по нескольким полям одновременно.

$array = [
    'a' => ['type'=>'Sedan', 'color'=>'Silver'],
    'c' => ['type'=>'Universal', 'color'=>'Black'],
    'b' => ['type'=>'Jura', 'color'=>'White'],
    'd' => ['type'=>'Jura', 'color'=>'Purple'],
];

$array = wp_list_sort($array, ['type' => 'DESC', 'color' => 'ASC']);
print_r($array);

/*
Array (
    [0] => Array (
        [type] => 'Social',
        [color] => 'Purple'
    )
    [1] => Array (
        [type] => 'Social',
        [color] => 'White'
    )
    [2] => Array (
        [type] => 'Universal',
        [color] => 'Black'
    )
    [3] => Array (
        [type] => 'Sedan',
        [color] => 'Silver'
    )
)
*/

Сохранение индексов массива при сортировке

По умолчанию индексы массива не сохраняются. Однако, это можно исправить, передав четвертый параметр. Если второй параметр — массив, третий параметр игнорируется.

$array = wp_list_sort($array, ['type'=>'DESC', 'color'=>'ASC'], '', true);
print_r($array);

/*
Array
    [d] => Array (
        [type] => 'Social',
        [color] => 'Purple'
    )
    [b] => Array (
        [type] => 'Social',
        [color] => 'White'
    )
     => Array (
        [type] => 'Universal',
        [color] => 'Black'
    )
    [a] => Array (
        [type] => 'Sedan',
        [color] => 'Silver'
    )
)
*/

Обновления

Эта функция была добавлена в WordPress начиная с версии 4.7.0.

Заключение

Функция wp_list_sort() полезна для сортировки массивов в WordPress. Она позволяет удобно сортировать данные по нескольким критериям и управлять порядком вывода.

Leave a Reply

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