如果我们查看官方文件WP_Query
:
https://codex.wordpress.org/Class_Reference/WP_Query#Category_Parameters
显示与特定类别关联的帖子。
cat
(int)-使用类别id。category_name
(字符串)-使用类别slugcategory__and
(数组)-使用类别id。category__in
(数组)-使用类别id。category__not_in
(数组)-使用类别id。
问题是
cat
需要类别ID,而不是值数组。
我们还可以看到category__not_in
, 我们可以使用实际的数组,而不是逗号分隔的列表:
$query->set( \'category__not_in\', [13,14,15,16] );
这导致了另一个问题,即:
if ( $query->is_main_query() && !is_admin() && $query->is_home() ) {
如果你想在管理员上运行这个,为什么这部分在检查中?
!is_admin() && $query->is_home()
它说,如果不是管理员,而我们在主页上,那么就执行X。但你想要的是相反的结果!移除is home位,并反转
is_admin
通过删除
!
. 这部分需要初级PHP技能才能完成。
最后,要求数据库排除内容、遗漏内容是很昂贵的,而且随着内容量的增加,成本会变得过高。
此外,您永远不应该硬编码ID,只需要有人删除类别并重新创建它,站点迁移等等,然后它就被破坏了