หลายค่า orderby ใน WP_Query


14

ฉันพยายามหาคำสั่งเพื่อจัดเรียงตามค่า orderby หลายค่า นี่คือสิ่งที่ฉันมี:

    $dept_id=2;
    $query=new WP_Query(array(
            'post_type'=>'wpcontactus',
            'nopaging'=>true,
            'post_status'=>array('publish', 'pending', 'future'),
            'meta_key'=>'wcu_dept',
            'meta_value'=>$dept_id,
            'orderby'=>'title',
            'order'=>'ASC'
    ));

ฉันพยายามสอบถามประเภทโพสต์ที่กำหนดเองและภายในประเภทโพสต์นั้นให้ค้นหาค่าเมตา

จากนั้นฉันต้องการเรียงลำดับโดยmenu_orderน้อยไปหามากแล้วตามด้วยเมตาดาต้าที่กำหนดเองwcu_lastnameจากน้อยไปมาก อย่างไรก็ตามค่า orderby ดูเหมือนจะไม่สามารถใช้อาร์เรย์ได้

ฉันจะสั่งซื้อแบบสอบถามโดยใช้ค่า orderby หลายค่าได้อย่างไร


3
ถ้าฉันไม่ผิดเพียงเพิ่มช่องว่างคั่นพวกเขา
ไกเซอร์

คำตอบ:


18

@Musa เราจะใส่มูลค่าการสั่งซื้อหลายรายการสำหรับฟิลด์ ฉันสงสัยคำถามเดียวกันและฉันพบสิ่งนี้:

ใน 4.0 ตอนนี้คุณสามารถส่งผ่านอาร์เรย์ไปยัง WP_Query เป็นค่าสำหรับ orderby

ไวยากรณ์ดูเหมือนว่า:

$q = new WP_Query( array( 
    'orderby' => array( 
       'title'      => 'DESC', 
       'menu_order' => 'ASC' 
    ) 
));

ดูรายละเอียดเพิ่มเติมได้ที่นี่: https://make.wordpress.org/core/2014/08/29/a-more-powerful-order-by-in-wordpress-4-0/


8
$query=new WP_Query(array(
                'post_type'=>'wpcontactus',
                'nopaging'=>true,
                'post_status'=>array('publish', 'pending', 'future'),
                'meta_query'=>array(
                                array('key'=>'wcu_dept','value'=>$dept_id, 'compare'=>'='),
                            ),
                'meta_key'=>'wcu_firstname',
                'orderby'=>'menu_order wcu_firstname',
                'order'=>'ASC'
        ));

เมื่อใช้สิ่งที่ @kaiser แนะนำและmeta_queryตัวเลือกทำให้ฉันสามารถรับข้อความค้นหาที่ฉันต้องการได้


เราจะเพิ่มมูลค่าการสั่งซื้อหลายครั้งสำหรับฟิลด์ได้อย่างไร ตัวอย่างเช่น: ASC สำหรับ menu_order, DESC สำหรับวันที่
Musa

0
    $args = [
        's'              => $keyword,
        'post_type'      => ['page'],
        'paged'          => $paged,
        'posts_per_page' => PAGE_LIMIT,
        'tax_query' => [
             [
                  'taxonomy'         => TAX_RESOURCE_PAGE,
                  'field'            => 'slug',
                  'terms'            => $c_term_slug
             ],
        ],
        'post_status'    => 'publish',
        'meta_key'       => 'order',
        'meta_type'      => 'NUMERIC',
        'orderby'        => [
             'meta_value_num' => 'ASC',
             'ID' => 'DESC',
        ],
    ];
    $wp_query = new WP_Query( $args );

รหัสของฉันเป็นตัวอย่าง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.