tento executar uma consulta de tipo de postagem personalizada para corresponder aos seguintes critérios:
classifique os filmes primeiro por ano em ordem decrescente,
depois ("dentro" da ordem do ano) por título em ordem alfabética.
saída desejada:
título do filme A, 2006
título do filme Z, 2006
...
título do filme A, 1996
título do filme Z, 1996
eu uso o seguinte código:
$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',
));
Eu tentei várias coisas, mas só consigo esse resultado "inverso":
título do filme A, 1996
título do filme Z, 1996
...
título do filme A, 2006
título do filme Z, 2006
se eu alterar DESC, ASC, apenas altera a classificação do título. mas preciso aplicá-lo ao ano e não ao título.
é o caminho certo para usar dois valores orderby? ou eu tenho que usar uma meta_query ou SQL personalizado?
thx antecipadamente!
Aqui está a consulta SQL resultante de $GLOBALS['wp_query']->request
Wp_posts SELECT. *
DE wp_posts
INNER JOIN wp_term_relationships
EM (wp_posts.id = wp_term_relationships.object_id)
INNER JOIN wp_postmeta
EM (wp_posts.id = wp_postmeta.post_id)
em que 1 = 1
E (wp_term_relationships.term_taxonomy_id EM (24))
E wp_posts.post_type = 'filmes'
AND (wp_posts.post_status = 'publique')
AND (wp_postmeta.meta_key = 'ano')
GRUPO BY wp_posts.id
ORDEM POR wp_postmeta.meta_value + 0,
wp_posts.post_title DESC
fonte
ASC
deve encurtar AZ;DESC
deve classificar ZA.Seu problema não é tanto com
orderby
como comorder
. Emboraorderby
aceite vários valores e seu uso pareça aceitável,order
apenas aceitaASC
ouDESC
.Após a higienização,
order
é anexado à saída doorderby
processamento. Se eu entendi direito a lógica, isso significa que, dentre váriosorderby
parâmetros,order
será aplicado o último listado.Tente reverter
orderby
para'title meta_value_num'
que o título seja classificado por padrão eorder
se aplique ao ano em vez do título.fonte
order =>
parâmetro no formulário de consulta ASC para DESC e retorne. então eu acho que o meta_value_num não é aplicado. então o seu ponto interessante sobre a lógica da interação de ORDER e ORDERBY talvez seja de alguma forma diferente? ou estou fazendo errado?