首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >$query-> is _main_query()导致查询的tax_query被忽略

$query-> is _main_query()导致查询的tax_query被忽略
EN

WordPress Development用户
提问于 2019-05-05 12:05:03
回答 1查看 177关注 0票数 0

当主查询链接到pre_get_posts时,我遇到了问题,因为它导致菜单不显示。这是原始代码:

代码语言:javascript
复制
else if ( isset( $_GET['category'] ) && !is_admin()  ) {
    $_GET   = filter_input_array(INPUT_GET, FILTER_SANITIZE_STRING);
    $tax_query = array(
        array(
            'taxonomy' => 'events-category',
            'field' => 'slug',
            'terms' => array( strtolower( $_GET['category'] ) ),
        ),
    );
    $query->set( 'tax_query', $tax_query );
}

有人建议修改条件并添加$query->is_main_query()以避免混淆菜单的查询:

代码语言:javascript
复制
else if ( isset( $_GET['category'] ) && !is_admin() && $query->is_main_query()  ) {

我确实更改了它,并显示了菜单,但是分类法查询现在被完全忽略了,并且显示了所有的帖子。

为什么$query->is_main_query()要修改分类法查询?我完全不知所措。

EN

回答 1

WordPress Development用户

回答已采纳

发布于 2019-05-05 12:54:25

在最初的设置中,前端的所有类别查询都受到您定义的pre_get_posts过滤器的影响。因此,它对菜单查询的干扰。然后添加了一个额外的条件,is_main_query。结果是,菜单和主循环都不再受过滤器的影响。

这只能意味着一件事。您的页面上的主要查询实际上不是。因此,过滤器没有应用。

如果您自己编写了这个主题,您可以清理它,从而得到主查询并应用过滤器。否则,您可以检查代码,如果有一些参数集,您可以使用get方法检查,以确保您有条件地针对正确的查询,而不是使用is_main_query

票数 1
EN
页面原文内容由WordPress Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://wordpress.stackexchange.com/questions/337112

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档