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

51 lines
2.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## 修复方案
### 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` 文件不进入提交。验证通过后推送该分支到远端。