laoyang
b7dcdc1602
分类挂件下拉面板列出全部层级并缩进 #24
需求(2026-10-27):把多级目录也放进去,现在只显示第一级,把其他的
也放进去,注意缩进。线上实测 29 个分类(8 一级 + 21 二级,无第三层),
因此面板从「只列一级」改成「有几层列几层」。
inc/theme-widgets.php
- get_tree() 从写死两层改成任意深度递归。带 $seen 已访问集合 +
$max_depth=10 双重保护:parent 成环时只跳过、不抛异常 —— 侧栏
挂件白屏会把整站带下去,宁可少显示一条也不能崩。
- 排序递归到所有层(原来只排前两层,第三层往后顺序与「按文章数排」不一致)。
- 新增 find_name():触发条文案与面板渲染共用同一套遍历。原来两段各自
硬编码两层,层数一变必漏一处。
- 新增 render_level():widget() 面板改成单次递归调用。关闭 children
时把 children 清空交给同一函数,不另写一份循环 —— 两份循环必然漂移。
- 下一层 <ul> 放在本层 li 内部(HTML 里 ul 的直接子元素只能是 li)。
- children 兜底值 false → true,**两处**(widget 第 1501 行、form 第
1701 行)。线上实例 categories-3 没有这个键 ⇒ 走兜底 ⇒ 用户零操作生效。
assets/css/kratos.css
- .yang-cats-item 加 flex-wrap:wrap;子级 ul 用 flex:0 0 100% 独占
一整行,落在父级 li 的内容盒里 ⇒ 缩进逐层累加且所有层共用一个右边界。
- 缩进只由子级 li 的 padding-left 给,**子级 ul 的 padding-left 归零**。
第一版两处都给了 12px,几何实测每层缩进 24px(stepPx=[24,24,18]),
第 3 层名字只剩 148px,收敛规则也一起失效。
- 第 4 层起收缩到 6px([style*="--cat-d:3"] 起),避免深层吃光面板宽度。
- 每层 padding-right 一律 0,右侧 12px 只由顶层统一给 ⇒ 任意深度的
数字右沿都在同一竖线(数字要竖着比大小,错开一列就没法比)。
assets/css/kratos.min.css 重新压缩;style.css 版本号 → 3.2.56。
验证
- 端到端(真实 WordPress):120 通过 / 0 失败;旧代码 100 / 17
- 反证 20 组(R1~R19 + R13b)全部命中
- 视觉几何(线上真实页面):56 通过 / 0 失败
- 打包内容自检 26 项全过;发布判据 79 条全过
- 发布:update.json → 3.2.56,md5 0aa90b30e76d754de41febcb9271ddef
- 红线:服务器主题目录仍 3.2.55(未覆盖),等用户在后台点升级
2026-10-27 13:33:53 +08:00
..
2026-10-27 13:33:53 +08:00
2026-10-23 22:56:10 +08:00
2026-10-26 09:00:17 +08:00
2026-10-23 22:56:10 +08:00
2026-10-26 18:42:40 +08:00