สั่งซื้อโดยใช้เมตาคีย์และค่าเมตาหลาย ๆ ค่า [ปิด]


16

ฉันจะตั้งค่าเมตาคีย์หลายคำสั่งตามค่าเมตาใครสามารถให้ตัวอย่างฉันได้บ้าง?


4
ยินดีต้อนรับสู่ WPSE - เพื่อให้เราช่วยเหลือคุณคุณต้องช่วยเรา คุณช่วยอธิบายรายละเอียดเพิ่มเติมเกี่ยวกับสิ่งที่คุณพยายามทำและอาจโพสต์ตัวอย่างโค้ด
TheDeadMedic

คำตอบ:


32

meta_queryเป็นอาร์เรย์ของคำสั่งเมตาดาต้า ตัวอย่างเช่น:

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

คุณสามารถใช้อาเรย์แบบเชื่อมโยงพร้อมคีย์สำหรับแต่ละเมตาประโยค:

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

จากนั้นคุณสามารถใช้คีย์นั้นในการorder_byโต้แย้งโดยมี:

$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.
) );

หรือมากกว่าประโยค:

$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',
    ),
) );

ตัวอย่างที่นำมาจากโพสต์นี้ในบล็อก Make WordPres Core


อย่าลืมเพิ่มประเภทของคีย์ / ค่าเมตา มันจะมีผลต่อผลลัพธ์ โดยค่าเริ่มต้น wp จะถือว่าเมตาของคุณเป็นสตริง
Alexander Ivashchenko

3
แต่ถ้าฉันไม่ต้องการให้ผลลัพธ์ที่รัฐวิสคอนซินเท่านั้นล่ะ ฉันต้องการให้ทุกรัฐกลับมาและฉันต้องการแถวที่อาจมีหรือไม่มีเมืองและยังคงสั่งโดย 2 ฟิลด์เหล่านั้น เช่นไม่มีคำสั่ง WHERE เลย - เพียงแค่ ORDER BY
เฟลิกซ์อีฟ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.