Skip to content

Instantly share code, notes, and snippets.

@oterox
Last active August 29, 2015 14:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save oterox/9bd7f8abcbb2540a77ee to your computer and use it in GitHub Desktop.
Save oterox/9bd7f8abcbb2540a77ee to your computer and use it in GitHub Desktop.
Sorting Query Results by Multiple Meta Keys
<?php
// Query Arguments
$args = array(
'post_type' => 'review',
'posts_per_page' => 10,
'paged' => get_query_var( 'paged', false ),
'meta_query' => array(
'relation' => 'AND',
'be_top_pick' => array(
'key' => 'be_top_pick',
'compare' => 'EXISTS',
),
'be_price' => array(
'key' => 'be_price',
'type' => 'NUMERIC',
'compare' => 'EXISTS',
),
'be_rating' => array(
'key' => 'be_rating',
'type' => 'NUMERIC',
'compare' => 'EXISTS',
),
)
);
// Sort Results
$current_sort = isset( $_GET['hosting-sort'] ) ? esc_attr( $_GET['hosting-sort'] ) : 'most-recent';
switch( $current_sort ) {
case 'most-recent':
$args['orderby'] = array(
'be_top_pick' => 'DESC',
'post_date' => 'DESC',
);
break;
case 'price-high':
$args['orderby'] = array(
'be_top_pick' => 'DESC',
'be_price' => 'DESC',
);
break;
case 'price-low':
$args['orderby'] = array(
'be_top_pick' => 'DESC',
'be_price' => 'ASC',
);
break;
case 'rating-high':
$args['orderby'] = array(
'be_top_pick' => 'DESC',
'be_rating' => 'DESC',
);
break;
case 'rating-low':
$args['orderby'] = array(
'be_top_pick' => 'DESC',
'be_rating' => 'ASC',
);
break;
}
$loop = new WP_Query( $args );
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment