wp_list_sort()
Сортує масив об’єктів або масив масивів за одним або декількома полями.
Зручно використовуватиме наступне сортування результатів запиту, наприклад записів.
Також дивіться PHP функцію array_multisort() . Можливо, вона підійде краще для нестандартних варіантів сортування масивів.
WP_List_Util()
Хуків немає.
Повертає
Массив
. Відсортований масив.
Використання
wp_list_sort( $list, $orderby, $order, $preserve_keys );
-
$list
(масив) (обов’язковий) - Масив об’єктів, які потрібно відсортувати.
-
$orderby
(рядок/масив) -
Назва поля за яким потрібно сортувати. Можна вказати масив з декількох назв:
array(‘поле’=>’порядок’, ‘post_name’=>’ASC’)
За замовчуванням: array() -
$order
(рядок) -
Порядок сортування. Можливо: ‘ASC’ або ‘DESC’. Використовується лише якщо в попередньому параметрі вказано рядок.
За замовчуванням: ‘ASC’ -
$preserve_keys
(логічний) -
Чи потрібно зберегти ключі масиву під час сортування. true – зберегти або false – не зберігати.
Типово: 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 ] ] */ $res = wp_list_sort( $animals, 'name', 'ASC', true ); print_r ($ res); /* [ alligator => [ name => alligator, class => reptile ] bat => [ name => bat, class => mammal ] cat => [ name => cat, class => mammal ] dog => [ name => dog, class => mammal ] falcon => [ name => falcon, class => bird ] ] */
#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'=>'Сoupe', 'color'=>'White' ], 'd' => [ 'type'=>'Сoupe', 'color'=>'Purple' ], ]; $array = wp_list_sort( $array, [ 'type'=>'DESC', 'color'=>'ASC' ] ); print_r($array); /* Array ( [0] => Array ( [type] => Сoupe [color] => Purple ) [1] => Array ( [type] => Сoupe [color] => White ) [2] => Array ( [type] => Universal [color] => Black ) [3] => Array ( [type] => Sedan [color] => Silver ) ) */
Дивіться також сортування кількома полями через довільну функцію usort() .
#4 Сортування по кількох полях із збереженням індексів масиву
За замовчуванням індекси масиву не зберігаються, але це можна виправити, передавши 4-й параметр. Тут виникає питання, як бути, якщо ми в другому параметрі вказуємо масив, то що вказувати в 3-му параметрі?
Якщо в другому параметрі вказується масив, то третій параметр просто ігнорується і ми можемо вказати будь-що, щоб потім вказати четвертий параметр:
$array = [ 'a' => [ 'type'=>'Sedan', 'color'=>'Silver' ], 'c' => [ 'type'=>'Universal', 'color'=>'Black' ], 'b' => [ 'type'=>'Сoupe', 'color'=>'White' ], 'd' => [ 'type'=>'Сoupe', 'color'=>'Purple' ], ]; $array = wp_list_sort( $array, [ 'type'=>'DESC', 'color'=>'ASC' ], '', true ); print_r($array); /* Array [d] => Array [type] => Сoupe [color] => Purple [b] => Array [type] => Сoupe [color] => White [c] => Array [type] => Universal [color] => Black [a] => Array [type] => Sedan [color] => Silver ) */
список змін
З версії 4.7.0 | Введено. |
wp list sort WP 6.0.2
function wp_list_sort( $list, $orderby = array(), $order = 'ASC', $preserve_keys = false ) { if ( ! is_array( $list ) ) { return array(); } $util = new WP_List_Util( $list ); return $util->sort( $orderby, $order, $preserve_keys ); }