WordPress更新后wp_list_categories无法显示指定分类列表
解决WordPress更新后wp_list_categories带child_of参数不显示分类的问题
排查步骤及解决方案
1. 确认目标父分类的ID是否正确
旧代码里的child_of=6依赖父分类ID,但更新/迁移过程中分类ID可能出现变动(比如误删重建、数据库导入导出时ID重置):
- 登录WordPress后台,进入「文章」→「分类」,点击目标父分类的编辑按钮,查看浏览器地址栏的
tag_ID=X参数,确认X是否为6; - 或直接查询数据库
wp_terms表,找到目标父分类的term_id值,确保和代码中的child_of值一致。
2. 验证是否能获取到目标分类
先脱离wp_list_categories,用get_categories直接获取分类数据,判断是函数渲染问题还是确实没有符合条件的分类:
// 在sidebar.php中临时添加这段代码测试 $test_cats = get_categories(array( 'child_of' => 6, 'hide_empty' => 0 )); var_dump($test_cats); // 查看返回的分类数组
- 如果返回空数组:说明ID为6的分类没有子分类,或子分类的父ID设置错误,需要检查子分类的「父分类」选项是否正确关联到ID为6的分类;
- 如果返回正常分类数组:说明问题出在
wp_list_categories的渲染逻辑,继续下一步排查。
3. 检查参数写法是否正确
- 确保数组参数中的箭头是
=>而非转义后的=>,后者是HTML转义字符,PHP无法识别会导致参数失效; - 尝试换回旧代码的字符串参数格式,避免数组参数可能的语法错误:
wp_list_categories('child_of=6&orderby=name&show_count=0&title_li=&hide_empty=0');
4. 排查父分类状态
- 确认ID为6的父分类未被设置为「私密」或「待审核」,只有公开状态的分类才能被前端调用;
- 检查
wp_term_taxonomy表中,ID为6的分类对应的taxonomy字段是否为category,避免误关联到自定义分类法。
内容的提问来源于stack exchange,提问作者Vehlad
相关产品推荐
相关产品推荐

