WordPress как на ладони
wordpress jino

wp_list_sort() WP 4.7.0

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

Удобно использовать для последующей сортировки результатов запроса, например записей.

Работает на основе: 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 Пример сортировка многомерного массива

$array = array(
	'a' => array('тип'=>'Cедан',     'цвет'=>'баклажан'),
	'в' => array('тип'=>'Универсал', 'цвет'=>'асфальт'),
	'б' => array('тип'=>'Купе',      'цвет'=>'хаки'),
);

$posts = wp_list_sort( $array, 'тип' );

print_r( $posts );
/*
Получим 
Array(
	[0] => Array (
			[тип] => Купе
			[цвет] => хаки
		)

	[1] => Array (
			[тип] => Универсал
			[цвет] => асфальт
		)

	[2] => Array (
			[тип] => седан
			[цвет] => баклажан
		)
)
*/

Отсортируем в обратном порядке:

$posts = wp_list_sort( $array, 'тип', 'DESC' );

/*
Array (
	[0] => Array (
			[тип] => Универсал
			[цвет] => асфальт
		)

	[1] => Array (
			[тип] => Купе
			[цвет] => хаки
		)

	[2] => Array (
			[тип] => Cедан
			[цвет] => баклажан
		)
)
*/

Сохраним ключи:

$posts = wp_list_sort( $array, 'тип', 'DESC', 1 );

/*
Array (
	[в] => Array (
			[тип] => Универсал
			[цвет] => асфальт
		)

	[б] => Array (
			[тип] => Купе
			[цвет] => хаки
		)

	[a] => Array (
			[тип] => Cедан
			[цвет] => баклажан
		)
)
*/

#2 Пример сортировки массива записей

Допустим мы получили записи из БД. Затем с ними что-нибудь сделали. Например проверили и некоторые удалили. Теперь нужно их отсортировать.

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

// делаем с ними чего-нибудь

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

// или можно записать так
$posts = wp_list_sort( $posts, array('post_title'=>'ASC') );

#2.1 Сортировка по несколькими полям

Продолжим первый пример. Но отсортируем записи сначала по ID автора (по возрастанию), а потом по ID записи (по убыванию):

// $posts содержит массив объектов записи.

$posts = wp_list_sort( $posts, array('post_author'=>'ASC', 'ID'=>'DESC') );

Код wp list sort: wp-includes/functions.php VER 4.9.1

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

Cвязанные функции

Из метки: array list help func (фильтры сортировка массивов объектов)

Еще из раздела: Вспомогательные

wp_list_sort Комментариев нет

    Здравствуйте, !

    Ваш комментарий
    Предпросмотр