后台外观里能看到「文章侧栏」,往里拖了三个小工具,前台 sidebar.php 里却什么都不输出,is_active_sidebar 也返回 false。乍看像缓存或者权限的锅,追下去往往不是。

register_sidebar(['id' => 'sidebar-main', 'name' => '文章侧栏', 'before_widget' => '<div class="widget">']);
// sidebar.php
dynamic_sidebar('sidebar-main');

追下去是这么回事:register_sidebar 的 id 是 sidebar-main,模板里 dynamic_sidebar 传的是 sidebar_main,下划线和连字符差一个字符就取不到。id 留空时 WordPress 会用 name 自动生成,和模板里写的更难对上。

「侧边栏不显示」相关的日志我一般连着看前后五分钟,单看一条报错经常判断不出是哪一步失败。验证用真实数据走一遍,测试数据太干净,边界情况根本碰不到。

能分两步做的操作就别合成一步,中间看一眼返回值,出问题好判断。报错里带路径的,先去看那个路径在不在、权限对不对。

同一份配置存在多处的,先确认改的是被加载的那一份。

具体做法是,把 register_sidebar 的 id 和 dynamic_sidebar 的参数抄到一处逐字比对;注册时显式写 id,不要依赖自动生成;模板里先判断 is_active_sidebar 再输出,避免空 div 撑出间距。

验收就看一点,前台侧栏出现拖进去的三个小工具,空白页不再留出侧栏宽度。

作者 9823189