WP_Query - Memesan hasil berdasarkan nilai meta


49

Saya telah memeriksa sekitar dan belum melihat jawaban yang berfungsi sampai sekarang. Saya punya WP_Query dengan argumen berikut:

$args = array(
    'post_status' => 'publish',
    'post_type' => 'listing',
    'meta_key' => 'client_feedback_score',
    'orderby' => 'client_feedback_score',
    'order' => 'DESC'
        );

$query = new WP_Query($args);

Saya ingin memesan hasilnya dengan bidang posting khusus 'client_feedback_score', terendah ke tertinggi. Tapi ini sepertinya tidak berhasil ... adakah yang bisa mengarahkan saya ke arah yang benar?

EDIT (ASK):

Berkat respons Milo, inilah kode kerja untuk memesan dengan nilai meta numerik:

$args = array(
            'post_status' => 'publish',
            'post_type' => 'listing',
            'meta_key' => 'client_feedback_score',
            'orderby' => 'meta_value_num',
            'order' => 'DESC'
        );

Jawaban:


69

orderbyharus meta_value_num, atau meta_value, bukan nama kunci. Lihat parameter orderby WP_Query .


Berhasil memperlakukan, bersorak sorai.
Adam Moss

5
Catatan kecil, jika meta_keybelum ada untuk posting, posting akan diabaikan.
adamj

1
@RobBenz Anda mungkin harus memulai pertanyaan baru tentang topik ini. Langkah 1 Tetapkan nilai apa pun yang Anda inginkan ke kunci meta Anda, sebut saja my_meta_key, untuk setiap pos untuk menghasilkan pesanan apa pun yang Anda inginkan. Langkah 2 Anda atur meta_keydalam kueri Anda ke my_meta_key. Ini memberitahu WordPress untuk meminta posting yang memiliki kunci itu. Langkah 3 Tetapkan orderbydalam kueri Anda ke meta_value_num. Ini memberi tahu WordPress untuk tidak hanya mengirim pesan dengan my_meta_key, tetapi juga memesan secara numerik dengan kunci itu. Argumen kueri itu adalah satu-satunya tempat yang akan Anda lihat atau gunakan meta_value_num.
Milo

1
@adamj apakah ada solusi untuk ini? Saya perlu mengurutkan semua posting, terlepas dari apakah meta_key ada untuk posting atau tidak.
unbreak

1
@ unbreak solusi sederhana adalah untuk mem-parsing semua posting dan menambahkannya meta_keysebelum menjalankan permintaan pesanan
adamj
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.