作为您的pre_get_posts
函数保持不变,在使用时会发生冲突pre_get_posts
非常粗心。
pre_get_posts
在主查询之前修改查询变量对象AND WP_Query
已执行。因此,函数中的任何更改都会影响主查询和使用WP_Query
. 这就是为什么在你的论坛页面上一切都乱七八糟的原因,因为你也在把这些更改添加到你的论坛中
其次,在处理任何类型的存档查询时(is_archive()
, is_category()
等)所做的任何更改pre_get_posts
也会影响后端
因此,您的解决方案是运行pre_get_posts
仅在主查询上(is_main_query()
), 也就在前端(!is_admin()
)
这样就可以了
if( !is_admin() && $query->is_main_query() && $query->is_archive() );
EDIT
我不会更改上面的代码。只有意识到您的代码是针对作者页面的。那么你应该使用
is_author()
, 不
is_archive()