Created
January 9, 2019 15:48
-
-
Save pjohanneson/cd32a4f1a3eaa8318d33c577a49d373a to your computer and use it in GitHub Desktop.
pre_get_posts sorting on multiple meta keys
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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