描述
更多类似的主题函数信息,请查看主题开发手册中的条件标签文章。
返回
(bool) 查询是否为主查询。
说明
is_main_query()
函数是一个条件函数,可用于评估当前查询(例如循环内)是否为“主”查询(与辅助查询相反)。
这个函数在钩子中最常用,用于区分WordPress的主查询(用于页面、文章或归档)和自定义/二次查询。
is_main_query()
既可以用于前端查询(主题模板、插件等),也可以用于后端管理查询。如果当前查询是主查询,则返回true
,如果不是,则返回false
。
用法
if ( is_main_query() ) { // do stuff }
在底层
此函数不接受任何参数。相反,它会自动将$wp_query对象(即“当前查询”)与$wp_the_query
对象(“主查询”)进行比较
此函数是WP_Query::is_main_query()
方法的别名。在传递WP_Query
对象的过滤器或动作挂钩回调中,例如pre_get_posts
,调用此函数是循环的。相反,直接调用传递的对象的方法。例如,如果过滤器回调将传递的WP_Query
对象分配给$query
,则可以这样调用方法:
$query->is_main_query()
示例
add_action( 'pre_get_posts', 'foo_modify_query_exclude_category' ); function foo_modify_query_exclude_category( $query ) { if ( ! is_admin() && $query->is_main_query() && ! $query->get( 'cat' ) ) $query->set( 'cat', '-5' ); }
源码
更新日志
版本 | 描述 |
---|---|
3.3.0 | 开始引入 |
使用示例
使用
WP_Query->is_main_query()
代替is_main_query()
的示例(无效)/** * If the global query is for a category, exclude category 5. * * @param WP_Query $query Global WP_Query instance. */ function wpdocs_modify_query_exclude_category( $query ) { if ( ! is_admin() && $query->is_main_query() && ! $query->get( 'cat' ) ) $query->set( 'cat', '-5' ); } add_action( 'pre_get_posts', 'wpdocs_modify_query_exclude_category' );