当前浏览:首页 / WordPress函数 / is_main_query()

is_main_query()

判断查询是否为主查询

is 条件判断more...

main

querymore...


描述

更多类似的主题函数信息,请查看主题开发手册中的条件标签文章。


返回

(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开始引入

使用示例

  • 示例1

    使用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' );