参数
- $query_vars
-
(array) 请求的查询变量数组。
更多信息
- 此过滤器应用于传递给驱动页面内容的默认主SQL查询的查询变量。它是在添加了其他私有查询变量之后应用的,并且是你可以在执行主查询和实际访问数据库之前修改将生成文章(或页面)列表的查询的地方之一。
- 在
functions.php
中使用此钩子作为替代方法来更改主循环中返回的文章(作为query_posts()的替代方法)。使用此过滤器的优点是,它在执行SQL查询之前更改SQL查询,从而减少了数据库调用的数量。 - 不用说,尝试在模板php页面中使用此钩子不会有任何作用,因为此时主查询已经执行。
- 正如Rarst所提到的,此过滤器会影响所有默认查询,包括对管理仪表板的调用。您必须非常小心并进行彻底测试,以确保在修改查询字符串时站点的其他部分不会中断。
源码
更新日志
版本 | 描述 |
---|---|
2.1.0 | 开始引入 |
使用示例
从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; }