According to https://codex.wordpress.org/Class_Reference/WP_Query#Order_.26_Orderby_Parameters you want to specify it similar to the following code example: $args = array( 'orderby' => array( 'title' => 'DESC', 'menu_order' => 'ASC' ) ); $query = new WP_Query( $args ); This is supported from WordPress 4.0. For custom fields (post meta) you will need an added meta query, as detailed on https://make.wordpress.org/core/2015/03/30/query-improvements-in-wp-4-2-orderby-and-meta_query E.g: $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', ) ); This is supported since 4.2. In your case (edited from your question) I think you would need: $args = array( 'post_type' => 'listing', 'posts_per_page' => 10, 'paged' => $paged, 'tax_query' => array( array( 'taxonomy' => 'listingcategory', 'field' => 'slug', 'terms' => 'commercial', ) ), 'meta_query' => array( 'relation' => 'AND', 'listing_date_clause' => array( 'key' => 'listing_date', 'compare' => 'EXISTS', ), 'agreed_date_clause' => array( 'key' => 'agreed_date', 'compare' => 'EXISTS', ), ), 'orderby' => array( 'listing_date_clause' => 'DESC', 'agreed_date_clause' => 'DESC' ), );