Intento ejecutar una consulta de tipo de publicación personalizada para que coincida con los siguientes criterios:
ordenar las películas primero por año en orden descendente,
después de eso ("dentro" del orden del año) por título alfabéticamente.
salida deseada:
título de película A,
título de película 2006 Z, 2006
...
título de película A, 1996
título de película Z, 1996
yo uso el siguiente 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',
));
Intenté varias cosas pero solo puedo obtener este resultado "inverso":
título de la película A, 1996
título de la película Z, 1996
...
título de la película A, 2006
título de la película Z, 2006
si cambio DESC, ASC solo cambia la clasificación del título. pero necesito aplicarlo al año y no al título.
¿Es la forma correcta de usar dos valores ordenados? ¿o tengo que usar un meta_query o SQL personalizado?
Gracias de antemano!
Aquí está la consulta SQL resultante de $GLOBALS['wp_query']->request
Wp_posts SELECT. *
DE wp_posts
INNER JOIN wp_term_relationships
ON (wp_posts.id = wp_term_relationships.object_id)
INNER JOIN wp_postmeta
ON (wp_posts.id = wp_postmeta.post_id)
donde 1 = 1
Y (wp_term_relationships.term_taxonomy_id IN (24))
Y wp_posts.post_type = 'películas'
Y (wp_posts.post_status = 'publicar')
Y (wp_postmeta.meta_key = 'año')
GRUPO POR wp_posts.id ORDENAR
POR wp_postmeta.meta_value + 0,
wp_posts.post_title DESC
fuente
ASC
debe acortar AZ;DESC
debería ordenar ZA.Su problema no es tanto con
orderby
como conorder
. Si bienorderby
acepta múltiples valores y su uso parece estar bien,order
solo aceptaASC
oDESC
.Después de la desinfección
order
se agrega a la salida delorderby
procesamiento. Si entiendo la lógica correcta, eso significa que fuera de múltiplesorderby
parámetros,order
se aplicará al último listado.Intente revertir
orderby
para'title meta_value_num'
que el título se ordene por defecto y seorder
aplique al año en lugar del título.fuente
order =>
parámetro en el formulario de consulta ASC a DESC y viceversa. así que supongo que el meta_value_num no se aplica. ¿Entonces su punto interesante sobre la lógica de la interacción de ORDER y ORDERBY es quizás de alguna manera diferente? o lo estoy haciendo mal?