Support

Account

Home Forums Front-end Issues pre_get_posts – order posts by two different meta_keys (ACF select field) Reply To: pre_get_posts – order posts by two different meta_keys (ACF select field)

  • Thank you SO much, John – you have been a great help and this seems to be working really well. How then do I apply meta_value_num (so that month ’10’ is greater than month ‘2’ etc?) Adding ‘meta_value_num’ to the orderby array doesn’t seem to work. Here’s what I have now:

    function exhibition_pre_get_posts( $query ) {
    
    	if( is_admin() ) {
    		return $query;
    	}
    	
    	if( isset($query->query_vars['post_type']) && $query->query_vars['post_type'] == 'exhibition' ) {
    
    $meta_query = array(
      array(
        'year_clause' => array(
          'key' => 'year',
          'compare' => 'EXISTS'
        )
      ),
      array(
        'month_clause' => array(
          'key' => 'month',
          'compare' => 'EXISTS'
        )
      )
    );
    $query->set('meta_query', $meta_query);
    $query->set('orderby', array('year_clause' => 'DESC', 'month_clause' => 'DESC'));
    
    	}
    
    	// return
    	return $query;
    }
    
    add_action('pre_get_posts', 'exhibition_pre_get_posts');