我不太理解你的问题,但我发现有几个问题可能会对其他查询产生负面影响
首先,query_posts
不应使用Note: 此功能不适用于插件或主题。如后文所述,有更好、性能更好的选项来更改主查询。query\\u posts()是一种过于简单且有问题的方法,通过将页面的主查询替换为新的查询实例来修改它。它效率低下(重新运行SQL查询),并且在某些情况下会彻底失败(尤其是在处理POST分页时)。
始终使用WP_Query
或get_posts
如果无法使用更改主查询,请创建自定义查询pre_get_posts
满足您的需求。
干扰其他查询的最可能原因是您没有重置自定义查询。这对于任何尚未重置的自定义查询都非常重要will 对同一页上的任何其他查询都有负面影响。您可以使用重置查询wp_reset_postdata()
在自定义查询之后
有关更多信息,请阅读this post 我最近做过
EDIT
从您的评论来看,这个问题似乎与所讨论的代码无关
。。。我现在已将插件更改为使用wp\\u query,并添加了wp\\u reset\\u postdata(),但问题仍然存在
您需要调试这个,我将查找以下内容
任何pre_get_posts
. 使用时要记住一件事pre_get_posts
, 它改变了all 查询,主查询和自定义查询,如果未正确使用。如果每个实例只针对主查询,请确保其中包含以下代码if( $query->is_main_query())
您是否可以运行自定义查询来代替类别页面上的主查询。如果是这样,不要这样做。请阅读this post 这可以解释一切。
此外,打开调试并检查是否有任何错误。尝试切换到捆绑主题,停用所有其他插件,并检查您的问题是否与您的插件或您正在使用的主题相关。如果你在切换主题后遇到同样的问题,很可能是你的插件
EDIT 2
正如我所怀疑的,这是
pre_get_posts
这就是问题的根源。请查看quick event manager中的以下几行。php
Line 28: add_filter( \'pre_get_posts\', \'qem_add_custom_types\' );
Line 106: function qem_add_custom_types( $query ) {
Line 107: if( is_category() || is_tag() ) {
Line 108: $query->set( \'post_type\', array(\'post\', \'event\',\'nav_menu_item\'));
Line 109: return $query;
Line 110: }
Line 111: }
pre_get_posts
不仅要更改主查询,还要更改自定义查询。这不仅发生在前端,也发生在后端。所以使用时要非常小心
pre_get_posts
, 否则你最终会遇到问题
LETS DISSECT WHAT IS HAPPENING
最近发表的文章小部件使用自定义查询在侧栏中显示最近发表的文章。您的代码所做的是,当您在类别或标记页上时,它会将以下帖子类型添加到所有查询中
\'post\', \'event\',\'nav_menu_item\'
.
正如我所说,pre_get_posts
作用于all 查询、主查询和自定义查询。这就是为什么你在分类页面上看到奇怪的行为,实际上,如果你检查一下,你在标签页面上也会遇到同样的问题。此外,在访问类别和标记页面时,您还应该在后端看到奇怪的行为。
THE SOLUTION
ALWAYS 使用时
pre_get_posts
, 仅将其定向到主查询(
is_main_query()
), 其次,始终检查您是否在管理页面(后端)或前端页面上,并仅对前端进行更改(
!is_admin()
)
您应该将代码更改为
function qem_add_custom_types( $query ) {
if( !is_admin() && $query->is_category() || $query->is_tag() && $query->is_main_query() ) {
$query->set( \'post_type\', array(\'post\', \'event\',\'nav_menu_item\'));
return $query;
}
}
这应该解决这个问题。