WP_Query sort by multiple custom fields
WP_Query has a meta_query
parameter to filter results by custom field values.
You can also use it for sorting if you give each meta_query element a named key.
Notice the names “featured” and “rating” within the meta_query, and how those names are also used within the orderby array.
$args = [ 'post_type' => 'cars', 'post_status' => 'publish', 'meta_query' => [ 'featured' => [ 'key' => 'is_featured', 'compare' => 'EXISTS' ], 'rating' => [ 'key' => 'avg_rating', 'compare' => 'EXISTS', 'type' => 'numeric' ] ], 'orderby' => [ 'featured' => 'DESC', 'rating' => 'DESC' ] ]; // Run the query at some point $query = new WP_Query( $args );