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

WordPress-PHP实现:无子分类时隐藏子分类显示

解决WordPress分类页无子分类时隐藏子分类区域的问题

没问题,我来帮你搞定这个需求!你现在的核心问题是:不管当前分类有没有子分类,那个带sub-cat-inline类的div都会被渲染出来——哪怕里面是空的。我们只需要加个简单判断,只有当当前分类存在子分类时,才输出这个div和里面的内容就行。

修改后的完整代码

<?php
// 先判断当前页面是不是分类页
if (is_category()) {
    $cur_cat_id = get_query_var('cat');
    // 获取当前分类的所有子分类
    $child_categories = get_categories(array(
        'parent' => $cur_cat_id,
        'hide_empty' => false, // 若只想显示有文章的子分类,改成true即可
        'hierarchical' => false
    ));
    
    // 检查是否存在子分类,有内容才输出整个区域
    if (!empty($child_categories)) {
?>
<div class="sub-cat-inline">
    <?php
    // 输出子分类列表(这里替换成你原来的wp_list_categories完整调用即可)
    wp_list_categories(array(
        'child_of' => $cur_cat_id,
        'title_li' => '', // 去掉默认的列表标题
        // 你原来添加的其他参数(比如样式、链接格式)可以继续加在这里
    ));
    ?>
</div>
<?php
    }
}
?>

关键修改点拆解(针对你不懂PHP的情况)

  • 先用get_categories()获取当前分类的子分类数组,通过parent参数精准定位只找当前分类的子分类
  • 用!empty($child_categories)判断是否有子分类:如果数组不为空,说明存在子分类,才会输出整个sub-cat-inlinediv
  • 把原来的div和子分类输出代码都包裹在这个判断里,这样无子分类时,整个div都不会被渲染到页面上,自然不会有多余空白或样式问题

小提示

如果你原来的wp_list_cate...是wp_list_categories()的不完整写法,直接把你之前写的参数补到我代码里的wp_list_categories数组里就行,完全兼容你原来的显示效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:41:13