当前浏览:首页 / WordPress钩子 / request

apply_filters( 'request', array $query_vars )

过滤解析后的查询变量数组

request


参数

$query_vars

(array) 请求的查询变量数组。


更多信息

  • 此过滤器应用于传递给驱动页面内容的默认主SQL查询的查询变量。它是在添加了其他私有查询变量之后应用的,并且是你可以在执行主查询和实际访问数据库之前修改将生成文章(或页面)列表的查询的地方之一。
  • functions.php中使用此钩子作为替代方法来更改主循环中返回的文章(作为query_posts()的替代方法)。使用此过滤器的优点是,它在执行SQL查询之前更改SQL查询,从而减少了数据库调用的数量。
  • 不用说,尝试在模板php页面中使用此钩子不会有任何作用,因为此时主查询已经执行。
  • 正如Rarst所提到的,此过滤器会影响所有默认查询,包括对管理仪表板的调用。您必须非常小心并进行彻底测试,以确保在修改查询字符串时站点的其他部分不会中断。


源码

查看源码 官方文档


更新日志

版本描述
2.1.0开始引入

使用示例

  • 示例1

    从Codex迁移的示例:

    scribu使用示例(经wordpress.stackexchange.com许可复制):

    add_filter( 'request', 'alter_the_query' );
    
    function alter_the_query( $request ) {
        $dummy_query = new WP_Query();  // the query isn't run if we don't pass any query vars
        $dummy_query->parse_query( $request );
    
        // this is the actual manipulation; do whatever you need here
        if ( $dummy_query->is_home() )
            $request['category_name'] = 'news';
    
        return $request;
    }