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
相关产品推荐
相关产品推荐

