Wordpress pre_get_post过滤并按相同字段排序

时间:2017-08-23 09:49:50

标签: wordpress sorting filter advanced-custom-fields

我正在尝试添加过滤器并在pre_get_posts中排序,以根据自定义字段(meal_date)将显示限制为日期大于或等于今天的帖子,并使用相同的自定义按升序对这些字段进行排序场(meal_date)。 orderby单独工作,过滤器单独工作,但不能一起工作。

add_filter('pre_get_posts', 'pre_get_posts_hook' ); // place pre_get_posts_hook in functions.php

$currentDate = date('Y-m-t');    //today's date

function pre_get_posts_hook($wp_query) { //start the pre_get_posts_hook
    if(is_admin() ){ //if admin page
    return $query; // take no action
  }
  if (is_archive()) //if archive page, do the following
    {
        $wp_query->set( 'orderby', 'meta_value' );  //set query to orderby
        $wp_query->set( 'meta_key', 'meal_date' ); // set query to look at field
        $wp_query->set( 'order', 'ASC' ); // set query order ascending
        $wp_query->set( 'meta_query', array( //start array
              array(
                    'key' => 'meal_date', //query meal_date field
                    'value' => $currentdate, //when today's date
                    'compare' => '>=', // compare equal to or greater than $currentdate
                    'type' => 'numeric' // type of data to be compared
                    )
                    )
                    );

      return $wp_query;
    }
}

0 个答案:

没有答案