j'essaie d'exécuter une requête de type de message personnalisé pour correspondre aux critères suivants:
trier les films d'abord par année dans l'ordre décroissant,
après cela ("à l'intérieur" de l'année) par titre par ordre alphabétique.
sortie souhaitée:
titre de film A, 2006
titre de film Z, 2006
...
titre de film A, 1996
titre de film Z, 1996
j'utilise le code suivant:
$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',
));
j'ai essayé plusieurs choses mais je ne peux obtenir que ce résultat "inverse":
titre du film A, 1996
titre du film Z, 1996
...
titre du film A, 2006
titre du film Z, 2006
si je change DESC, ASC cela ne change que le tri des titres. mais je dois l'appliquer à l'année et non au titre.
est-ce la bonne façon d'utiliser deux valeurs de commande? ou dois-je utiliser une méta-requête ou un SQL personnalisé?
merci d'avance!
Voici la requête SQL résultante de $GLOBALS['wp_query']->request
SELECT wp_posts. *
FROM 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)
WHERE 1 = 1
AND (
wp_term_tp_tp_tp = 'films'
ET (wp_posts.post_status = 'publier')
ET (wp_postmeta.meta_key = 'année')
GROUPE PAR wp_posts.id
COMMANDER PAR wp_postmeta.meta_value + 0,
wp_posts.post_title DESC
la source
ASC
devrait court AZ;DESC
devrait trier ZA.Votre problème n'est pas autant avec
orderby
qu'avecorder
. Tout enorderby
accepte plusieurs valeurs et votre utilisation semble ok, n'accepte ou .order
ASC
DESC
Après la désinfection
order
est ajoutée à la sortie duorderby
traitement. Si je comprends bien la logique, cela signifie que sur plusieursorderby
paramètres,order
s'appliquera au dernier répertorié.Essayez de revenir
orderby
à'title meta_value_num'
afin que le titre soit trié par défaut etorder
s'applique à l'année au lieu du titre.la source
order =>
paramètre dans le formulaire de requête ASC en DESC et retour. donc je suppose que le meta_value_num n'est pas appliqué. donc votre point intéressant sur la logique de l'interaction entre ORDER et ORDERBY est peut-être en quelque sorte différent? ou je me trompe?