wp_list_sort() WP 4.7.0

Сортує масив об’єктів або масив масивів за одним або декількома полями.

Зручно використовуватиме наступне сортування результатів запиту, наприклад записів.

Також дивіться 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

Приклади

0

#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 ]
]
*/
0

#2 Приклад сортування масиву об’єктів (постів)

Припустимо, ми отримали записи з БД. Потім із ними щось зробили. Наприклад, перевірили і деякі видалили. Тепер потрібно їх відсортувати.

// Отримаємо масив об'єктів, тут записи...
$posts = get_posts(['posts_per_page'=>15]);

// робимо з ними чогось

// сортуємо за заголовком від А до Я
$posts = wp_list_sort( $posts, 'post_title', 'ASC');

// або так
$posts = wp_list_sort( $posts, [ 'post_title'=>'ASC' ] );
0

#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() .

0

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

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *