Ich versuche, eine benutzerdefinierte Post-Typ-Abfrage auszuführen, die den folgenden Kriterien entspricht:
Sortieren Sie Filme zuerst nach Jahr in absteigender Reihenfolge,
danach ("innerhalb" der Jahresreihenfolge) nach Titel alphabetisch.
gewünschte Ausgabe:
Filmtitel A, 2006
Filmtitel Z, 2006
...
Filmtitel A, 1996
Filmtitel Z, 1996
Ich benutze den folgenden Code:
$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',
));
Ich habe verschiedene Dinge ausprobiert, aber ich kann nur dieses "inverse" Ergebnis erhalten:
Filmtitel A, 1996
Filmtitel Z, 1996
...
Filmtitel A, 2006
Filmtitel Z, 2006
Wenn ich DESC, ASC ändere, ändert sich nur die Titelsortierung. aber ich muss es auf das Jahr und nicht auf den Titel anwenden.
Ist es der richtige Weg, zwei Orderby-Werte zu verwenden? oder muss ich eine meta_query oder benutzerdefiniertes SQL verwenden?
Danke im Voraus!
Hier ist die resultierende SQL-Abfrage von $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)
wobei 1 = 1
UND (wp_term_relationships.term_taxonomy_id IN (24))
UND wp_posts.post_type = 'Filme'
UND (wp_posts.post_status = 'veröffentlichen')
UND (wp_postmeta.meta_key = 'Jahr')
GROUP BY wp_posts.id
ORDER BY wp_postmeta.meta_value + 0,
wp_posts.post_title DESC
quelle
ASC
sollte AZ kurzschließen;DESC
sollte ZA sortieren.Ihr Problem ist nicht so viel mit
orderby
wie mitorder
. Währendorderby
mehrere Werte und Ihre Nutzung scheint ok akzeptiert,order
nur akzeptiertASC
oderDESC
.Nach dem Desinfizieren
order
wird an die Ausgabe derorderby
Verarbeitung angehängt . Wenn ich die Logik richtig verstehe, bedeutet dies, dass von mehrerenorderby
Parameternorder
auf den zuletzt aufgelisteten angewendet wird.Versuchen Sie,
orderby
den'title meta_value_num'
Titel rückgängig zu machen, damit er standardmäßig sortiert wird undorder
für das Jahr anstelle des Titels gilt.quelle
order =>
Parameter im Abfrageformular ASC in DESC und zurück ändere . Ich denke also, dass die meta_value_num nicht angewendet wird. Ihr interessanter Punkt über die Logik des Zusammenspiels von ORDER und ORDERBY ist also vielleicht irgendwie anders? oder mache ich es falsch