Улучшенные возможности сортировки при помощи orderby и meta_query

Владислав Белецкий
Владислав Белецкий .
Категория:
Комментариев: 0

В WordPress 4.2 (да, давно) появились некоторые дополнительные возможности при работе с параметром orderby запросов WP_Query, get_posts() и т.д., особенно они хороши в комбинации с использованием параметра meta_query.

Для тех, кто давно в теме WordPress, наверняка знаком с подобным типом записи:

$q1 = new WP_Query( array(
	'meta_key' => 'city',
	'orderby' => 'meta_value', // meta_value_num для числовых значений поля
) );
 
$q2 = new WP_Query( array(
	'meta_key' => 'city',
	'orderby' => 'city', // можно также указать название ключа
) );

Но дело в том, что подобная запись и параметры meta_key, meta_value появились ещё до существования meta_query! А теперь, когда мы с вами используем их в запросе, то где-то в глубине они просто преобразуются в первый массив meta_query (типа обратная совместимость).

C приходом WordPress 4.2 в 2015-м году у вас появилась возможность присваивать нечисловые индексы каждому из массивов (условий) meta_query а потом что? А потом сортировать по этим индексам! 🚀

$q = new WP_Query( array(
	'meta_query' => array(
		'relation' => 'AND',
		'state_clause' => array(
			'key' => 'region',
			'value' => 'Ленинградская область',
		),
		'city_clause' => array(
			'key' => 'city',
			'compare' => 'EXISTS',
		), 
	),
	'orderby' => 'city_clause', // результаты будут отсортированы по городам
) );

А смотрите, что ещё можно сделать!

// ...
	'orderby' => array(
		'city_clause' => 'ASC',
		'state_clause' => 'DESC',
	),
// ...

Изменения затронули не только класс WP_Query для вывода постов, но также и WP_Comment_Query и WP_User_Query. Кайф.

Похожие посты

Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии