Php 从特定类别中排除Wordpress帖子显示在主页上

Php 从特定类别中排除Wordpress帖子显示在主页上,php,wordpress,Php,Wordpress,这里有一个棘手的问题 如果一篇文章被标记为“a类”,我希望它被排除在主页之外。这可以通过以下代码实现: function exclude_category($query) { if ( $query->is_home() ) { $query->set('cat', '-3804'); } return $query; } add_filter('pre_get_posts', 'exclude_category'); 但是如果

这里有一个棘手的问题

如果一篇文章被标记为“a类”,我希望它被排除在主页之外。这可以通过以下代码实现:

function exclude_category($query) 
{
    if ( $query->is_home() ) 
    {
        $query->set('cat', '-3804');
    }
    return $query;
}

add_filter('pre_get_posts', 'exclude_category');

但是如果一篇文章被标记为“a类”和“B类”,我希望它能显示在主页上。如何调整代码以实现这一点?

您可能想到了这一点,但如果某个项目仅在类别A中,则不显示与显示除类别A之外的所有类别相同

function exclude_category($query) 
{
    if ( $query->is_home() ) 
    {
        $query->set('cat', 'B,C,D,E,F');
    }
    return $query;
}

add_filter('pre_get_posts', 'exclude_category');

您可能想到了这一点,但如果某个项目仅属于类别A,则不显示与显示除类别A之外的所有类别相同

function exclude_category($query) 
{
    if ( $query->is_home() ) 
    {
        $query->set('cat', 'B,C,D,E,F');
    }
    return $query;
}

add_filter('pre_get_posts', 'exclude_category');

嗨,只是对前面答案的补充

function exclude_category($query) 
{
$categories = get_categories();
$catarray="";
foreach ($categories as $category) {
if ($category->cat_ID !="<your category ID>")
{
    $catarray .=$category->cat_ID.",";
}
    }
rtrim($catarray, ",");
if ( $query->is_home() ) 
{
    $query->set('cat', $catarray);
}

}
return $query;


add_filter('pre_get_posts', 'exclude_category');
函数排除\u类别($query)
{
$categories=get_categories();
$catarray=“”;
foreach($categories作为$category){
如果($category->cat_ID!=“”)
{
$catarray.=$category->cat_ID.“,”;
}
}
rtrim($catarray,“,”);
如果($query->is\u home())
{
$query->set('cat',$catarray);
}
}
返回$query;
添加过滤器('pre_get_posts','exclude_category');

您好,这是上一个答案的补充

function exclude_category($query) 
{
$categories = get_categories();
$catarray="";
foreach ($categories as $category) {
if ($category->cat_ID !="<your category ID>")
{
    $catarray .=$category->cat_ID.",";
}
    }
rtrim($catarray, ",");
if ( $query->is_home() ) 
{
    $query->set('cat', $catarray);
}

}
return $query;


add_filter('pre_get_posts', 'exclude_category');
函数排除\u类别($query)
{
$categories=get_categories();
$catarray=“”;
foreach($categories作为$category){
如果($category->cat_ID!=“”)
{
$catarray.=$category->cat_ID.“,”;
}
}
rtrim($catarray,“,”);
如果($query->is\u home())
{
$query->set('cat',$catarray);
}
}
返回$query;
添加过滤器('pre_get_posts','exclude_category');

我尝试了您的解决方案,但效果不错,但出于某种奇怪的原因,它删除了我的副导航,并将其替换为我的主导航。你知道为什么吗?你能详细说明一下菜单在哪里被替换吗?我试过你的解决方案,但它奏效了,但出于某种奇怪的原因,它删除了我的副导航,并用我的主导航替换了它。你知道为什么吗?你能详细说明一下菜单的更换地点吗?