有朋友问,wordpress的搜索结果能否出现近十天的内容?虽然我不知道他这奇怪的需求是要干啥,但是是可以的。一般要改变前台的结构,我都用pre_get_posts钩子,然后判断是否是搜索页面,加上日期搜索的条件即可。
将代码复制到主题的functions.php文件中即可,当然如果有更奇怪的需求,可以对照上面的的注释修改。
代码如下:


function ashuwp_custom_posts_per_page($query){
  //非后台、搜索页面、主循环
  if(!is_admin() && is_search()&& $query->is_main_query()){
    $today = getdate(); //获取当前时间
    $ago_time = strtotime("-10 days"); //十天前的时间戳
    $days_ago = getdate($ago_time); //按时间戳返回十天前的日期
    $date_args = array(
      array(
        'after' => array(
          'year' => $days_ago['year'],
          'month' => $days_ago['mon'],
          'day' => $days_ago['mday'],
        ),
        'before' => array(
          'year' => $today['year'],
          'month' => $today['mon'],
          'day' => $today['mday'],
        ),
        'inclusive' => true, //启用after  before
      ),
    );
    $query->set('date_query', $date_args);
  }
  return $query;
}
add_action('pre_get_posts','ashuwp_custom_posts_per_page');