从主存档页面隐藏 WordPress 博客文章类别

问题描述 投票:0回答:1

我正在尝试找出如何从我的 WordPress 博客存档页面隐藏特定类别 (id=89)。我希望能够在网站的其他部分使用此类别的特定博客文章,但我不希望它们出现在任何主要存档页面中(作为类别链接或通过存档页面显示帖子本身) 。我的页面上有以下代码,但我不知道在哪里以及添加什么内容来隐藏此 id:

        <h3>Categories</h3>
        <?php
        $categories = get_categories( array(
            'hide_empty' => 1,
        ) );
         
        foreach( $categories as $category ) {
        
        // print_r($category);
        
        $category_link = get_category_link( $category->term_id ); 
        ?>
        <ul>
        <li><a href="<?php echo $category_link; ?>"><?php echo $category->name; ?></a></li>
        
        <?php
        }
        ?>
        
        </ul>
        </div>
```
php wordpress
1个回答
0
投票

对于类别列表,请像这样修改代码:

<h3>Categories</h3>
<?php
$categories = get_categories(array(
    'hide_empty' => 1,
    'exclude' => array(89) // Exclude category ID 89
));
 
foreach($categories as $category) {
    $category_link = get_category_link($category->term_id); 
    ?>
    <ul>
        <li><a href="<?php echo esc_url($category_link); ?>"><?php echo esc_html($category->name); ?></a></li>
    </ul>
    <?php
}
?>
</div>

要在存档页面中也排除此类别中的帖子,请将此代码添加到主题的functions.php文件中

function exclude_category_from_archive($query) {
if (!is_admin() && $query->is_main_query()) {
    if ($query->is_archive() || $query->is_home()) {
        $query->set('cat', '-89'); // The minus sign excludes the 

category
        }
    }
}
add_action('pre_get_posts', 'exclude_category_from_archive');

如果需要排除多个类别,可以这样修改数组:

'exclude' => array(89, 90, 91) // For the category list

$query->set('cat', '-89,-90,-91') // For the archive pages

© www.soinside.com 2019 - 2024. All rights reserved.