Files
wordpress-theme-aksrt/.zcode/plans/plan-sess_89734dfe-5f98-4990-a139-6123fa850516.md
T
2026-09-04 18:48:57 +08:00

2.3 KiB
Raw Blame History

修复方案

1. 删除废弃的静态 action 入口

修改 assets/js/runtime/main.js:

  • 完整删除全局 _win.bd.on('click', '[data-action]', ...) 委托。
  • 完整删除仅被该委托调用的 action_ajax() 函数。
  • 保留紧随其后的独立 [ajax-action] 处理器以及其他合法的 data-action 属性读取。
  • 不创建 assets/action/action.php,不增加兼容代理,不把旧协议映射到新接口。

仓库内文章互动、评论点赞、关注等已有 WordPress AJAX/REST 实现,因此这是单一路径硬切换。

2. 精确同步运行时压缩产物

修改 assets/js/runtime/main.min.js:

  • 从唯一 _win.bd.on("click","[data-action]" 起点,精确删除到下一个 _win.bd.on("click","[ajax-action]" 起点之前的旧压缩块。
  • 不执行全量前端构建,以免覆盖或重新格式化其他已有运行时产物。
  • 删除后确认 [ajax-action] 处理器仍存在,action_ajax 和 /action/action.php 均消失。

当前该文件虽然出现在状态列表中,但内容与 HEAD 完全一致,因此可安全形成仅针对旧块的内容差异。

3. 增加硬切换契约测试

新增 tests/widget-system/runtime-action-hard-cut-contract.test.cjs:

  • 同时检查 main.js 与 main.min.js。
  • 断言旧全局 [data-action] 委托不存在。
  • 断言 action_ajax 不存在。
  • 断言 /action/action.php 不存在。
  • 断言独立 [ajax-action] 处理器仍保留且只有一份。
  • 不禁止整个仓库使用 data-action,避免误伤下载、弹窗和其他新业务属性。

4. 验证

  • 运行新增的 runtime action 契约测试。
  • 运行全部 tests/widget-system/*.test.cjs。
  • 使用 rg 检查源码和压缩产物中不存在 action/action.php、action_ajax 和旧委托。
  • 执行 git diff --check,确认没有格式问题。
  • 不做真实视觉验收,不恢复静态 PHP 直连入口。

5. 提交

从当前 origin/main 创建 worktree/fix-legacy-action-404 分支,只提交:

  • assets/js/runtime/main.js
  • assets/js/runtime/main.min.js
  • tests/widget-system/runtime-action-hard-cut-contract.test.cjs

现有其他 CSS、JavaScript 状态项和 .zcode/plans 文件不进入提交。验证通过后推送该分支到远端。