Сортировка сообщений по пользовательским полям в meta_query

Как применить «order_by» в запросе WordPress в следующем примере:

У меня есть запрос на получение всех сообщений с настраиваемым полем для дат события, большего или равного текущей дате. У меня может быть до 10 событий (event_date_0, event_date_1 и т. Д.) За пост, поэтому я запускаю цикл в мета-запросе, например:

$meta_query_array = array( 'relation' => 'OR' ); for($date_row = 0;$date_row < 10; $date_row++){ $single_date_query = array( 'key' => 'event_date_'.$date_row, 'value' => date('Ym-d'), 'compare' => '>=', 'type' => 'DATE' ); array_push($meta_query_array, $single_date_query); } $args = array( 'post_type' => array('events'), 'posts_per_page' => -1, 'meta_query' => $meta_query_array ); $events = new WP_Query( $args ) 

Эта часть отлично работает. Я получаю все сообщения, где по крайней мере 1 из 10 дат события больше или равно текущей дате.

Теперь мне нужно применить сортировку (упорядочить). Я хотел бы установить order_by другим настраиваемым полем «рейтинг» DESC. И здесь я терплю неудачу.

Просто добавляется в $ args, например:

 $args = array( 'post_type' => array('events'), 'posts_per_page' => -1, 'meta_query' => $meta_query_array, 'meta_key' => 'rating', 'orderby' => 'meta_value_num', 'order' => 'DESC', ); 

не работает. Не уверен, как это сделать, если нужно.

Любые советы будут высоко ценится.

Solutions Collecting From Web of "Сортировка сообщений по пользовательским полям в meta_query"

Начиная с WordPress 4.2 вы можете комбинировать meta_query и meta_query . Следующий пример взят из make.wordpress.org .

Пример простой meta_query :

 $q = new WP_Query( array( 'meta_query' => array( 'relation' => 'AND', 'state_clause' => array( 'key' => 'state', 'value' => 'Wisconsin', ), 'city_clause' => array( 'key' => 'city', 'compare' => 'EXISTS', ), ), 'orderby' => 'city_clause', ); 

Параметр orderby включает ключ meta_query . Вы также можете установить его в state_clause для другого порядка.

Что действительно круто, так это возможность комбинировать различные предложения порядка, передавая массив в orderby :

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

Это приведет к SQL-запросу, например

 ORDER BY city_clause ASC, state_clause DESC 

для более сложных типов заказов.