Saya perlu melakukan pemesanan multi-level dalam permintaan. Masalahnya adalah dengan memesan satu nilai DESC dan ASC lainnya seperti dalam SQL. SQL berikut ini sepertinya memberikan apa yang saya inginkan ketika saya menjalankannya di terminal:
SELECT DISTINCT * FROM wp_posts
INNER JOIN wp_postmeta
ON wp_posts.ID = wp_postmeta.post_id
WHERE wp_posts.post_type = 'post'
AND wp_postmeta.meta_key = 'pb_issue_featured'
AND wp_posts.post_status = 'publish'
ORDER BY wp_postmeta.meta_value DESC, wp_posts.menu_order ASC;
Ini pb_issue_featured
adalah nilai boolean. Hasil akhir yang saya butuhkan adalah kueri untuk menampilkan posting yang memiliki nilai meta 1 untuk bidang ini di bagian atas, lalu semua yang lain di bawah. Kemudian pemesanan tingkat kedua adalah yang ditunjuk menu_order
(saya menggunakan plugin urutan jenis posting).
Masalahnya adalah bahwa nilai boolean saya perlu dipesan tinggi ke rendah (1 ke 0) tetapi menu_order sebaliknya. Apa yang dipesan terlebih dahulu dengan plugin ini memiliki urutan menu 1. Jadi menggunakan 'orderby' bawaan di WP_Query tidak berfungsi. Adakah yang punya saran? Saya melihat ke filter 'posts_orderby' tetapi tidak bisa mengambilnya. Tidak benar-benar yakin di mana itu harus diterapkan atau bagaimana saya bisa memecahkannya. Itu hanya tidak memesan kembali cara saya memilikinya.
Terima kasih untuk bantuannya! Saya akan memposting WP_Query yang sebenarnya jika relevan tetapi saya ingin membuat ini sesingkat mungkin.
Argumen kueri:
$args = array(
'post_type' => 'post',
'meta_key' => 'pb_issue_featured',
'orderby' => 'meta_value',
'order' => 'DESC',
'post_status' => 'publish',
'posts_per_page' => $posts,
'paged' => $paged,
'meta_query' => array(
array(
'key' => 'headline',
'value' => 1,
'compare' => '!='
)
)
);
$q = new WP_Query($args);
Jawaban:
Coba ini:
sumber