d36bb954d1
Baseline before backporting wp-data-optimizer v3.0.1-v3.4.6. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TbG1keQQ7XBa7qMQY16KCY
109 lines
3.3 KiB
Markdown
109 lines
3.3 KiB
Markdown
# CLAUDE.md — 2meet Data Optimizer (核心)
|
||
|
||
> 父環境:`/var/www/Studio/wp-local-dev/CLAUDE.md` 與 `/var/www/Studio/wp-local-dev30/CLAUDE.md`
|
||
> 全域:`~/.claude/CLAUDE.md`(含 Karpathy Guidelines)
|
||
|
||
---
|
||
|
||
## Reset recovery
|
||
|
||
1. 讀本檔(CLAUDE.md)取得 plugin 上下文
|
||
2. 讀 [PLAN.md](PLAN.md) 看當前 phase 進度
|
||
3. 接續 PLAN.md 的下一個未完成步驟
|
||
|
||
---
|
||
|
||
## Plugin 概述
|
||
|
||
**2meet-data-optimizer** 是純通用 WordPress 反 EAV 引擎,從 `wp-data-optimizer v2.16.0` 提煉。
|
||
|
||
- 不依存 HivePress / WooCommerce / LatePoint / 2meet-*
|
||
- 4 entity 通用(post/user/term/comment)
|
||
- 整合層全部交給 11 個獨立 AddOn
|
||
|
||
完整拆分計畫見 `~/.claude/plans/wp-data-optimizer-2meet-data-optimizer-zesty-liskov.md`。
|
||
|
||
---
|
||
|
||
## 開發紀律
|
||
|
||
### 命名前綴
|
||
- 類別:`TMDO_*`
|
||
- 函式:`tmdo_*`
|
||
- 常數:`TMDO_VERSION` / `TMDO_PATH` / `TMDO_URL` / `TMDO_FILE`
|
||
- Hook:`tmdo_*`(同時 dual-fire `wpdo_*` 過渡)
|
||
- Text-domain:`2meet-data-optimizer`
|
||
|
||
### 對外相容
|
||
- 主要 API 公開:`TMDO_API`、`TMDO_Schema_Registry`、`TMDO_Entity_Registry`、`TMDO_Custom_Table_Registry`、`TMDO_Feature_Flags`、`TMDO_DB`、`TMDO_Crypto`、`TMDO_Logger`
|
||
- **必加 `class_alias( 'TMDO_*', 'WPDO_*' )`** 對應全部上述 8 個類別
|
||
- **必 dual-fire** `tmdo_*` 與 `wpdo_*` 共 9 個 hook(見 plan § 11.2)
|
||
|
||
### 反 EAV 紅線(CI gate 守門)
|
||
- ❌ `SELECT FROM wp_postmeta / wp_usermeta / wp_termmeta / wp_commentmeta`(除一次性 migration / cron)
|
||
- ❌ 硬編碼表名 `wp_postmeta` / `wp_options`,必走 `TMDO_DB::table()`
|
||
- ❌ 主動 `add_action('updated_postmeta', ...)`(與 Hook Bus 衝突)
|
||
- ❌ 單外掛 `autoload=yes` 的 `wp_options` > 30 條
|
||
- ❌ 直接 `unserialize()`,必走 `TMDO_Safe_Unserialize::run()`
|
||
|
||
### 安全
|
||
- 所有 SQL 走 `$wpdb->prepare()`
|
||
- 動態 IN 子句用 `array_fill('%d')` 動態佔位符
|
||
- DROP TABLE 前白名單 + prefix 雙重驗證
|
||
- `manage_options` capability check + nonce
|
||
- 輸出 `esc_html()` / `esc_attr()` / `esc_url()`
|
||
|
||
### Crypto
|
||
- `TMDO_Crypto`:AES-256-GCM AEAD(`enc:v2:` 格式),向後相容讀取 `enc:v1:` (CBC)
|
||
- 加密 wp_options 內 webhook 密鑰
|
||
|
||
---
|
||
|
||
## 任務管理
|
||
|
||
- 開始任務前更新 `PLAN.md`
|
||
- 每完成一步驟,標記 ✅
|
||
- 重要決策 / 踩坑記錄在 PLAN.md「Lessons learned」
|
||
|
||
---
|
||
|
||
## 常用指令
|
||
|
||
```bash
|
||
# Lint
|
||
find . -name "*.php" | grep -v vendor | grep -v tests | xargs php -l
|
||
|
||
# Unit tests
|
||
./vendor/bin/phpunit --configuration phpunit.xml
|
||
|
||
# Integration tests(需本機 MariaDB)
|
||
./vendor/bin/phpunit --configuration phpunit-integration.xml
|
||
|
||
# WP-CLI
|
||
wp --path=/var/www/Studio/wp-local-dev30 tmdo status
|
||
wp --path=/var/www/Studio/wp-local-dev30 tmdo doctor
|
||
wp --path=/var/www/Studio/wp-local-dev30 tmdo benchmark hot_post --samples=200
|
||
|
||
# 打包(必經 10 終檢)
|
||
/var/www/Studio/wp-local-dev/scripts/package-plugin.sh 2meet-data-optimizer
|
||
```
|
||
|
||
---
|
||
|
||
## 邊界
|
||
|
||
- ✅ 本外掛觸碰:4-entity 反 EAV 引擎、zone 表、migration、wizard、admin、CLI、REST、snapshot、diagnostic、notifications
|
||
- ❌ 本外掛**不**觸碰:HP / WC / LP / 2meet-* 邏輯(全部交給 AddOn)
|
||
- ❌ 本外掛**不**註冊:HP listing 欄位、WC product 欄位、SSO sso group、infocards postmeta(全部交給 AddOn)
|
||
|
||
---
|
||
|
||
## Phase 進度
|
||
|
||
```
|
||
Phase 0 ✅ 骨架建立 (2026-05-15)
|
||
Phase 1 ⬜ Core v0.1.0 (W1-W2)
|
||
```
|
||
|
||
詳見 `PLAN.md`。
|