Files
wordpress-theme-aksrt/.zcode/plans/plan-sess_e1b7a731-938b-41a6-9e4c-bb973c7dc8b5.md
T
2026-08-22 16:56:36 +08:00

6.5 KiB
Raw Blame History

assets/vendor 全量迁移 + 全仓去 zibll 化

目标布局(类型归位,git mv 保留历史)

源 目标 说明
assets/vendor/fontawesome5/ assets/fontawesome5/ css/ + webfonts/ 原结构,../webfonts 相对引用不变
assets/vendor/zibll/css/(22 文件) assets/css/ 顶层 bootstrap/animate/swiper/main 等,无命名冲突;main(.min).css 的 url(../img/playing.svg) 迁后恰好仍指向 assets/img,无需改
assets/vendor/zibll/js/** assets/js/runtime/** 必须子目录:assets/js 已有 14 个同名自有文件(author/sign-register/page-navs…)和一个 enlighter/ 目录
assets/vendor/zibll/img/captcha/ assets/img/captcha/ slidercaptcha.js 运行时按 _win.uri + '/img/captcha/' 拼接,新 uri=assets 根后自然命中
assets/vendor/zibll/img/{medal,smilies} 与 assets/img/ 哈希比对 相同跳过、缺失补齐;内容不同时以当前实际渲染源为准(medal/smilies 保现有,user_t.jpg/slider-bg.jpg 以 vendor 版覆盖,因 PHP 默认值当前渲染的是 vendor 版)
assets/vendor/zibll/img/playing.svg 等散图 assets/img/
assets/vendor/zibll/fonts/(孤儿 2 文件) assets/fonts/ 按"全部迁移"保留
js/libs/{DPlayer,dash.all,flv,hls,vanilla-tilt}.min.js 不迁移(智能去重) 先哈希验证与 assets/widgets/third-party/ 字节一致(探索已确认大小一致);loader.js paths 改指 '../widgets/third-party/DPlayer.min' 等(相对 baseUrl);若任一哈希不符则该文件照常迁入 runtime/libs/

完成后删除 assets/vendor/。

运行时切换(核心链路 _win.uri)

PHP 将 'uri' 从 …/assets/vendor/zibll 改为 …/assets,loader(改造版 RequireJS)以 baseUrl = _win.uri + '/js' 解析懒加载模块:

  1. assets/js/runtime/loader.js:baseUrl 改为 _win.uri + '/js/runtime'(paths 表 'libs/swiper.min'、'enlighter/enlighterjs.min' 等相对值全部随之命中,无需逐条改,除 5 个去重库改 ../widgets/third-party/)
  2. main.js + main.min.js:enlighter CSS 注入 _win.uri + '/js/enlighter/…' → '/js/runtime/enlighter/…'(swiper CSS 注入 /css/swiper.min.css 迁后自然命中,不改)
  3. 已核实的死引用(/css/dplayer.min.css 404、/action/action.php、/yiyan/…、paths 中 shop—main)保持原状不修不扩

PHP 引用切换(7 个文件)

  • src/Core/ScriptsPart1b.php:16-17,23,38-41、src/Core/ScriptsPart1c.php:35-42,53:新变量 $runtime_uri = $base_uri . '/assets'、$fa5_uri = $base_uri . '/assets/fontawesome5';jquery/bootstrap/loader/main 路径改 assets/js/runtime/…
  • inc/core-hooks/part-3.php:52、src/Admin/Admin.php:116:FA5 新路径
  • src/Admin/PageConfigMetaBox.php:275,277、src/Settings/DisplayPageGroups.php:96,98、src/Admin/Schema/SchemaPageDisplay.php:77,123,138,163,190:assets/vendor/zibll/img/ → assets/img/

全仓去 zibll 清扫(用户已确认含功能性标识符)

先跑全仓盘点(排除 .git、composer vendor、node_modules、tests/visual、assets/admin/build):zibll/Zibll、zib__、zib_ajax、zibllblock、wp-block-zibllblock、.zib-、_zb、Qinver、zibll.com、子比,产出替换映射并核对目标名无既有冲突(如 aksrt_ajax)。统一替换规则:

  • 品牌头注释:@Author: Qinver / @Url: zibll.com / @Project: Zibll子比主题 → @package AKSRT;swiper 内 //zibll : 修改内容 等注释中性化;main.js:4866 的 console.log(' Zibll Theme …') 及 min 等价物删除
  • 功能性标识符重命名(生产端+消费端原子同步,含 min 文件 sed,改后 diff 抽查只允许替换点变化):
    • zibllblock/* → aksrtblock/*;zibll_block_cat/var → aksrt_block_cat/var;.wp-block-zibllblock-* → .wp-block-aksrtblock-*(⚠️ 数据库已发布内容中的旧块名将无法渲染,用户已接受且明确不写兼容层)
    • 'zibll' + type localStorage 键 → 'aksrt' + type(游客点赞记录重置,已接受)
    • zib__() i18n 函数 → aksrt__()(先定位定义处,全量替换所有调用,含各 .min.js)
    • zib_ajax 等运行时函数按盘点结果同步改名
  • AKSRT 自有资产:assets/css/frontend/zibll-utilities.css → legacy-utilities.css、zibll-compat-vars.css → compat-vars.css、footer/zibll-shell.css → footer/shell.css(含 enqueue_module 调用、handle 派生、测试引用);.zib-widget(19处)/.zib-slider → .aksrt-widget/.aksrt-slider(CSS + PHP 输出标记 + vendor js 选择器同步)
  • PHP 变量/注释:$zibll_uri 等改名;所触及文件注释中 Zibll 措辞改写为"legacy runtime"
  • admin SPA:Vue 源内用户可见 zibll 文案改写后 cd assets/admin && npm run build
  • 例外保留:tests/visual/(docker-compose.zibll.yml、zibll-Caddyfile、baseline)指向外部真实 Zibll 对照主题,属产品名引用,不改

测试同步

  • tests/navigation/zibll-navigation-contract.test.cjs(本地未跟踪):所有 vendor 路径 → 新路径;walk 根改 assets/js/runtime(js)与 assets/css 顶层(css);新增断言 assets/vendor 目录不存在;文件更名 legacy-navigation-contract.test.cjs
  • tests/widget-system/{post-visual,toast,page-display,lazyload}-contract.test.cjs:loader/main 读取路径更新;toast 的 $zibll_loader_version/$zibll_runtime_version 正则同步新变量名;lazyload sourceFiles skip 列表把 'vendor' 换成/加上 'runtime' 保持语义
  • 其他 widget-system 测试中引用 zibll 路径/字样的断言同步更新

验证与收尾

  1. php -l 逐个检查所有改动 PHP
  2. node --test tests/widget-system/post-visual-contract.test.cjs 等全部受影响 contract 测试 + 更名后的 navigation 测试
  3. grep 审计:全仓(按上述排除项)zibll|Qinver|子比|zib__ 零残留;assets/vendor 零引用
  4. 手工 QA 清单:首页/文章页/评论区、FA 图标、滑块验证码图、勋章、enlighter 高亮、DPlayer 视频播放
  5. 不主动提交;建议单原子 commit:refactor(assets): vendor 资产迁入标准目录并全仓去除 zibll 标识(移动+切换+清扫+测试必须同 commit 才能保持可用)

风险提示(用户已确认接受)

  • 数据库中已存 zibllblock/* 块的旧文章渲染损坏(无兼容层)
  • 游客 localStorage 点赞/收藏记录重置
  • min 文件 sed 属精细操作,逐文件 diff 验证