在某些情况下,WordPress 从循环中隐藏或显示类别

Wordpress hide or show category from loop in certain cases

我想在首页显示的帖子列表中默认排除某个类别。我发现了如何使用 pre_get_posts 钩子巧妙地做到这一点。它工作正常,分类帖子不显示。
现在我只想在我专门查询此类别时显示这些类别帖子。因此,要么显示所有不属于该类别的帖子(默认),要么只显示这只猫的帖子而没有其他内容。 我认为解决方案很简单,但我的代码不起作用:

//Don't show posts with cat id 6
$excluded = array('6');

//Retrieve category parameter from current query
$categ = get_query_var('cat');

//If the current query doesn't ask for cat 6 specifically,
//exclude this category
if ($categ != '6') {
    set_query_var('category__not_in', $excluded);
}

但是当我查询具体类别时,仍然没有任何显示,所以显然我的if语句是错误的?我想当我查询类别时,get_query_var('cat') 会 return 猫 ID?

通过https://wordpress.stackexchange.com/questions/26889/get-query-var-and-permalinks找到答案

显然,当使用漂亮的永久链接时,Wordpress 会进行一些内部操作,例如在查询中不设置类别 ID,而是类别名称。所以我只是将类别分辨率更改为

$categ = get_cat_ID(get_query_var('category_name'));

而且效果很好。另一个让开发人员恼火的 Wordpress 想法 lol