Функция 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. Она позволяет удобно сортировать данные по нескольким критериям и управлять порядком вывода.