You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在WordPress单篇文章中限制分类显示数量并隐藏指定分类

嘿,这个需求其实挺常见的,咱们可以通过WordPress的钩子(过滤器)来轻松实现——不用硬改主题模板(当然改模板也行,但用钩子更灵活,主题更新也不怕丢配置)。下面给你整合了两种需求的具体方案:

实现方法一:用全局过滤器(推荐)

这种方法会对全站所有文章的分类显示生效,不管你用的是主题默认的分类输出,还是自定义的调用,都能统一处理。

具体代码

把下面的代码添加到你的主题functions.php文件里,或者自定义插件的PHP文件中:

function custom_limit_and_hide_categories($categories, $post_id) {
    // 1. 定义要隐藏的分类ID列表(替换成你自己的分类ID)
    $hidden_cat_ids = array(5, 8, 12); // 这里的数字是分类ID,可按需增删
    
    // 可选:只针对特定文章类型生效(比如仅文章post,排除页面page)
    if (get_post_type($post_id) !== 'post') {
        return $categories;
    }

    // 2. 过滤掉要隐藏的分类
    $filtered_categories = array_filter($categories, function($category) use ($hidden_cat_ids) {
        return !in_array($category->term_id, $hidden_cat_ids);
    });
    
    // 3. 限制显示的分类数量(比如只显示前3个)
    $max_display = 3; // 这里设置你想要的最大显示数量
    $limited_categories = array_slice($filtered_categories, 0, $max_display);
    
    // 返回处理后的分类数组
    return $limited_categories;
}
add_filter('get_the_categories', 'custom_limit_and_hide_categories', 10, 2);

代码说明

  • 找分类ID:进入WordPress后台的「分类」页面,点击任意分类,地址栏里tag_ID=后面的数字就是该分类的ID,把它填到$hidden_cat_ids数组里就行。
  • 自定义生效范围:如果不想全局生效,可以去掉注释的那段代码,比如只让它对文章类型生效,或者再加个判断针对特定文章ID:if ($post_id !== 123) return $categories;(123是目标文章ID)。
  • 调整显示数量:修改$max_display的数值就能控制最多显示几个分类,比如改成2就只显示前2个。
实现方法二:直接修改主题模板(适合针对性调整)

如果你只想让某几个页面的分类显示生效,或者主题用了自定义的分类输出逻辑,也可以直接修改模板文件:

  1. 找到主题里显示文章分类的模板,比如single.php、content-single.php这类文件;
  2. 找到原本的分类输出代码(通常是the_category(', '););
  3. 替换成下面的代码:
$categories = get_the_category();
// 隐藏的分类ID
$hidden_cat_ids = array(5, 8, 12);
// 过滤掉不需要的分类
$filtered_cats = array_filter($categories, function($cat) use ($hidden_cat_ids) {
    return !in_array($cat->term_id, $hidden_cat_ids);
});
// 限制显示数量
$limited_cats = array_slice($filtered_cats, 0, 3);
// 输出分类链接
if (!empty($limited_cats)) {
    $cat_links = array();
    foreach ($limited_cats as $cat) {
        $cat_links[] = '<a href="' . esc_url(get_category_link($cat->term_id)) . '">' . esc_html($cat->name) . '</a>';
    }
    echo implode(', ', $cat_links);
}

这种方式的好处是只影响你修改的模板部分,但缺点是如果主题更新,你修改的代码可能会被覆盖,记得做好备份。

注意事项

  • 修改代码前一定要备份相关文件,避免写错导致网站无法访问;
  • 如果你的主题用了第三方插件或自定义分类函数,可能需要调整对应的过滤器(比如用wp_get_post_terms过滤器);
  • 测试的时候记得清空缓存,确保修改生效。

内容的提问来源于stack exchange,提问作者popcorn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:29:37