How to order by multiple meta keys?
This is something that WordPress added support for in 4.2: https://make.wordpress.org/core/2015/03/30/query-improvements-in-wp-4-2-orderby-and-meta_query/
In your case you'll probably want to do something like this:
$args = array( 'post_type' => 'event', 'meta_query' => array( 'relation' => 'AND', 'event_start_date_clause' => array( 'key' => '_event_start_date', 'compare' => 'EXISTS', ), 'event_start_time_clause' => array( 'key' => '_event_start_time', 'compare' => 'EXISTS', ), ), 'orderby' => array( 'event_start_date_clause' => 'ASC', 'event_start_time_clause' => 'ASC', ),);$loop = new WP_Query( $args );
You have to use meta_query at add your meta keys as everyone said, but also you have to customize order by function.
$args = array( 'post_type' => 'event', 'meta_key' => '_event_start_date', 'meta_query' => array( array('key' => '_event_start_date'), array('key' => '_event_start_time') ),);add_filter('posts_orderby','customorderby');$loop = new WP_Query( $args );remove_filter('posts_orderby','customorderby');
And put this on your functions.php
function customorderby($orderby) { return 'mt1.meta_value ASC, mt2.meta_value ASC';}
You can read more at http://dotnordic.se/sorting-wordpress-posts-by-several-numeric-custom-fields/
From WP_Query documentation, use meta_query
and fill up with an array of meta key/values:
$args = array( 'post_type' => 'product', 'meta_query' => array( array( 'key' => 'color', 'value' => 'blue', 'compare' => 'NOT LIKE' ), array( 'key' => 'price', 'value' => array( 20, 100 ), 'type' => 'numeric', 'compare' => 'BETWEEN' ) ));$query = new WP_Query( $args );