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