Pesan dengan beberapa kunci meta dan nilai meta [ditutup]

16

Bagaimana saya bisa mengatur beberapa kunci meta memesan berdasarkan nilai meta, bisakah ada yang memberi saya contoh?

Dhiraj Suthar
sumber
4
Selamat datang di WPSE - agar kami dapat membantu Anda, Anda perlu membantu kami. Bisakah Anda menjelaskan secara lebih terperinci apa yang Anda coba lakukan, dan mungkin memposting beberapa contoh kode.
TheDeadMedic

Jawaban:

31

meta_queryadalah array dari meta clauses. Sebagai contoh:

$q = new WP_Query( array(
    'meta_query' => array(
        'relation' => 'AND',
        array(
            'key' => 'state',
            'value' => 'Wisconsin',
        ),
        array(
            'key' => 'city',
            'compare' => 'EXISTS',
        ), 
    ),
) );

Anda bisa menggunakan array asosiatif, dengan kunci untuk setiap meta klausa:

$q = new WP_Query( array(
    'meta_query' => array(
        'relation' => 'AND',
        'state_clause' => array(
            'key' => 'state',
            'value' => 'Wisconsin',
        ),
        'city_clause' => array(
            'key' => 'city',
            'compare' => 'EXISTS',
        ), 
    ),
) );

Kemudian, Anda bisa menggunakan kunci itu dalam order_byargumen, dengan satu:

$q = new WP_Query( array(
    'meta_query' => array(
        'relation' => 'AND',
        'state_clause' => array(
            'key' => 'state',
            'value' => 'Wisconsin',
        ),
        'city_clause' => array(
            'key' => 'city',
            'compare' => 'EXISTS',
        ), 
    ),
    'orderby' => 'city_clause', // Results will be ordered by 'city' meta values.
) );

Atau lebih banyak klausa:

$q = new WP_Query( array(
    'meta_query' => array(
        'relation' => 'AND',
        'state_clause' => array(
            'key' => 'state',
            'value' => 'Wisconsin',
        ),
        'city_clause' => array(
            'key' => 'city',
            'compare' => 'EXISTS',
        ), 
    ),
    'orderby' => array( 
        'city_clause' => 'ASC',
        'state_clause' => 'DESC',
    ),
) );

Contoh diambil dari posting ini di blog Make WordPres Core.

cybmeta
sumber
jangan lupa untuk menambahkan jenis kunci meta / nilai. itu akan mempengaruhi hasil. secara default wp akan memperlakukan meta Anda sebagai string.
Alexander Ivashchenko
3
Tetapi bagaimana jika saya tidak ingin hanya mengembalikan hasil di mana negara bagian Wisconsin? Saya ingin semua negara bagian dikembalikan dan saya ingin baris di mana mungkin ada atau tidak ada kota dan masih dipesan oleh 2 bidang tersebut. misalnya tidak ada klausa WHERE sama sekali - hanya ORDER BY.
Felix Eve