Skip to content

Instantly share code, notes, and snippets.

@pjohanneson
Created January 9, 2019 15:48
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 pjohanneson/cd32a4f1a3eaa8318d33c577a49d373a to your computer and use it in GitHub Desktop.
Save pjohanneson/cd32a4f1a3eaa8318d33c577a49d373a to your computer and use it in GitHub Desktop.
pre_get_posts sorting on multiple meta keys
add_action( 'pre_get_posts', 'sort_by_lname_then_fname' );
/**
* Sort by last name then first name. `lname` and `fname` are the meta keys.
*
* @param WP_Query $query The query. Passed by reference.
* @return void
* @link https://support.advancedcustomfields.com/forums/topic/pre_get_posts-order-posts-by-two-different-meta_keys-acf-select-field/
*/
function sort_by_lname_then_fname( &$query ) {
if ( $query->is_main_query() && $query->is_post_type_archive( 'speaker' ) ) {
$prefix = 'bu_conference_speaker_';
$meta_query = array(
'last_name' => array(
'key' => $prefix . 'lname',
'compare' => 'EXISTS',
),
'first_name' => array(
'key' => $prefix . 'fname',
'compare' => 'EXISTS',
),
);
$query->set( 'meta_query', $meta_query );
$query->set( 'orderby', array( 'last_name' => 'ASC', 'first_name' => 'ASC' ) );
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment