Multiple orderby values in WP_Query

I’m trying to come up with a query to sort by multiple orderby values. Here’s what I have so far:

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

I’m trying to query a custom post type, and within that post type, query a meta value.

Read More

Then, I’d like to first sort by menu_order ascending, then by a custom meta value wcu_lastname ascending. However, the orderby value didn’t seem to be able to take an array.

How can I order the query using multiple orderby values?

Related posts

Leave a Reply

3 comments

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

    By using what @kaiser suggested and the meta_query option, I was able to get the query I was looking for.

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

    my code is a example.