Set up query parameters for different CPT archives.
/** * @param $query */ function sfcc_pre_get_posts($query) { if(!is_admin() ) { // Directory Archive if($query->is_main_query() && is_post_type_archive('person')) { $query->set('orderby', 'meta_value'); $query->set('meta_key', 'last_name'); $query->set('order','ASC'); $query->set('posts_per_page', -1); $query->set('nopaging', TRUE); } // Degrees Archive if($query->is_main_query() && is_post_type_archive('degree')) { $query->set('orderby','title'); $query->set('order','ASC'); $query->set('posts_per_page', 100); } // Press Page if( $query->is_main_query() && is_post_type_archive( 'press' )) { $query->set( 'orderby', 'date' ); $query->set( 'order', 'DESC' ); $query->set('posts_per_page', 20); } // Policies Archive if ($query->is_main_query() && is_post_type_archive('policy')) { $query->set('meta_key', 'policy_number' ); $query->set('orderby', 'meta_value'); $query->set('order', 'ASC'); $query->set('posts_per_page', -1); $query->set('nopaging', TRUE); } // Policies Taxonomy if ($query->is_post_type_archive('policy')) { $query->set('tax_query', 'policy_section'); $query->set('meta_key', 'policy_number'); $query->set('orderby', 'meta_value'); $query->set('order', 'ASC'); $query->set('posts_per_page', -1); $query->set('nopaging', TRUE); } } } add_action('pre_get_posts', 'sfcc_pre_get_posts');