为什么‘DATE_QUERY’在‘PRE_GET_POSTS’挂接中不起作用?

时间:2017-03-14 作者:Eugene Zhuchenko

我需要使用几个参数在博客中输出热门帖子:

不超过一周

  • 按日期排序
  • 这是我的代码:

    function evanre_custom_order_query( $query ) {
    
      if ( is_admin() || ! $query->is_main_query() ) {
        return;
      }
    
      $query_var_show = get_query_var( \'show\' );
    
      if ( empty( $query_var_show ) ) {
        return;
      }
    
      if ( \'popular\' === $query_var_show ) {
        $query->set( \'orderby\', \'date\' );
        $query->set( \'meta_query\', array(
          array(
            \'key\'     => \'blt_upvotes\',
            \'value\'   => 250,
            \'compare\' => \'>=\',
            \'type\'    => \'NUMERIC\',
          ),
        ) );
        $query->set( \'date_query \', array(
          array(
            \'after\' => \'1 week ago\'
          )
        ) );
      }
    
    }
    
    add_action( \'pre_get_posts\', \'evanre_custom_order_query\' );
    
    我的自定义query\\u var已注册并正常工作。按日期排序有效,meta\\u查询也有效。date\\u查询被完全忽略。我错过了什么?

    1 个回复
    最合适的回答,由SO网友:Paul \'Sparrow Hawk\' Biron 整理而成

    您的$query->set().

    而不是

    $query->set( \'date_query \', ...
    
    它应该是:

    $query->set( \'date_query\', ...
    

    相关推荐