saya mencoba menjalankan kueri jenis kiriman khusus agar sesuai dengan kriteria berikut:
urutkan film pertama berdasarkan tahun dalam urutan menurun,
setelah itu ("di dalam" urutan tahun) berdasarkan judul menurut abjad.
output yang diinginkan:
judul film A,
judul film 2006 Z, 2006
...
judul film A,
judul film 1996 Z, 1996
saya menggunakan kode berikut:
$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',
));
saya mencoba beberapa hal tetapi saya hanya bisa mendapatkan hasil "terbalik" ini:
judul film A,
judul film 1996 Z, 1996
...
judul film A, 2006
judul film Z, 2006
jika saya mengubah DESC, ASC itu hanya mengubah pengurutan judul. tetapi saya harus menerapkannya pada tahun ini dan bukan pada gelar.
apakah ini cara yang tepat untuk menggunakan dua nilai orderby? atau apakah saya harus menggunakan meta_query atau custom SQL?
terima kasih sebelumnya!
Berikut adalah SQL Query yang dihasilkan dari $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)
MANA 1 = 1
AND (wp_term_relationships.term_taxonomy_id IN (24))
DAN wp_posts.post_type = 'film'
AND (wp_posts.post_status = 'publish')
AND (wp_postmeta.meta_key = 'year')
KELOMPOK OLEH wp_posts.id
ORDER BY wp_postmeta.meta_value + 0,
wp_posts.post_title DESC
sumber
ASC
harus menyingkat AZ;DESC
harus mengurutkan ZA.Masalah Anda tidak sebanyak dengan
orderby
denganorder
. Meskipunorderby
menerima beberapa nilai dan penggunaan Anda tampak ok,order
hanya menerimaASC
atauDESC
.Setelah sanitasi
order
ditambahkan ke outputorderby
pengolahan. Jika saya memahami hak logika yang berarti bahwa dari beberapaorderby
parameter,order
akan berlaku untuk yang terakhir terdaftar.Cobalah membalikkan
orderby
untuk'title meta_value_num'
judul sehingga diurutkan secara default danorder
berlaku untuk tahun bukan judul.sumber
order =>
parameter dalam bentuk permintaan ASC ke DESC dan kembali. jadi saya kira meta_value_num tidak diterapkan. jadi poin menarik Anda tentang logika interaksi ORDER dan ORDERBY mungkin berbeda? atau saya salah melakukannya?