я пытаюсь выполнить пользовательский запрос типа записи, чтобы соответствовать следующим критериям:
сортировать фильмы сначала по годам в порядке убывания, а
затем («внутри» порядка года) по названию в алфавитном порядке.
желаемый результат:
название фильма A, 2006
название фильма Z, 2006
...
название фильма A, 1996
название фильма Z, 1996
я использую следующий код:
$wp_query = new WP_Query();
$wp_query->query( array(
'post_type' => 'movies',
'distribution' => 'companyA',
'meta_key' => 'year',
'orderby' => 'meta_value_num title',
'order' => 'DESC',
'posts_per_page' => -1,
'post_status' => 'publish',
));
Я попробовал несколько вещей, но я могу получить только этот «обратный» результат:
название фильма A, 1996
название фильма Z, 1996
...
название фильма A, 2006
название фильма Z, 2006
если я изменяю DESC, ASC это только меняет сортировку заголовка. но мне нужно применить его к году, а не к названию.
это правильный способ использовать два значения orderby? или я должен использовать meta_query или пользовательский SQL?
спасибо заранее!
Вот результирующий SQL-запрос от $GLOBALS['wp_query']->request
ВЫБОР wp_posts. *
ОТ wp_posts
INNER JOIN wp_term_relationships
ВКЛ (wp_posts.id = wp_term_relationships.object_id)
INNER JOIN wp_postmeta
ВКЛ (wp_posts.id = wp_postmeta.post_id)
где 1 = 1
и (wp_term_relationships.term_taxonomy_id в (24))
и wp_posts.post_type = 'movies'
AND (wp_posts.post_status = 'publish')
AND (wp_postmeta.meta_key = 'year')
GROUP BY wp_posts.id
ORDER BY wp_postmeta.meta_value + 0,
wp_posts.post_title DESC