wpdev d6c1540444 feat(diagnostics): crypto 健檢 + backup 目錄探測 + 15 個 usermeta 欄位(PR-G)
- Crypto::is_key_derivable()(A v3.3.2):AUTH_KEY / SECURE_AUTH_SALT 皆缺
  時回 false,讓金鑰推導優雅短路
- wp tmdo doctor 新增兩項健檢:
  · backup 目錄 HTTP 可及性探測(200 = 紅旗並附 nginx 設定建議,
    403/404 = OK,0 = 離線時退回檢查 .htaccess)(A v3.1.9)
  · crypto 金鑰可推導性(缺常數時警告 notifier secrets 會以明文儲存)
- doctor_callback 呼叫簽章 3 參數 → 1 參數(A v3.0.3 修復)。**ABI 變更**:
  AddOn 註冊的 callback 若依賴 rows / full_name 需自行調整
- Member_Fields::register_admin_prefs_group() 由 7 欄擴到 22 欄(A v3.1.4),
  補上 wp_user_level / show_welcome_panel / wp_persisted_preferences /
  wp_user-settings / community-events-location 等 15 個 WP 原生 usermeta,
  這些先前全部落在 wp_usermeta
- capture_before_value 預設 true → false(A v3.1.5):每次受管寫入省一次
  DB read。**行為變更**:需要 value_before 的消費者(audit log)要
  add_filter( 'wpdo_capture_before_value', '__return_true' ) 明確開啟

unit 451 / integration 398 GREEN

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TbG1keQQ7XBa7qMQY16KCY
2026-07-31 06:11:52 +08:00

2meet Data Optimizer

通用 WordPress 反 EAV 引擎 — 零依賴,零 HivePress / WooCommerce / 2meet-* 綁定

wp_postmeta / wp_usermeta / wp_termmeta / wp_commentmeta 的高頻欄位自動分流到四象限扁平表(Hot / Warm / Cold / Archive),帶來 3-30× 的查詢加速。

wp-data-optimizer v2.16.0 提煉的純核心,整合層全部移到獨立 AddOn。


為什麼

WordPress 預設用 EAV (Entity-Attribute-Value) 模式儲存所有 meta:每筆 meta 都是 wp_*meta 表的一列。對少量欄位無傷,但站台一長大就出現:

  • 單一 listing 可能對應數十條 postmeta → 列表頁查詢爆炸
  • meta_query 複雜過濾必須 N 次 JOIN
  • autoload=yes 的 wp_options 拖慢每頁載入
  • _transient_* 滲入 wp_options 造成持續性脹

2meet-data-optimizer 為這些 meta 建立扁平欄位表(每 post_type 一張),由 Sync Bridge 雙寫,由 Query Router 改寫 meta_query 為直接 JOIN,達到接近原生欄位的效能。


四象限

Zone 表名 用途 加速場景
A Hot wp_wpdo_hot_{type} 搜尋 / 篩選欄位 meta_query 過濾、ORDER BY 排序
B Warm wp_wpdo_warm TTL 計數 / 短期快取 瀏覽計數、暫時旗標
C Cold wp_wpdo_cold_{type} 展示 / 描述欄位 詳情頁讀取
D Archive wp_wpdo_archive 過期 gzip 歸檔 歷史資料保留

系統需求

  • WordPress ≥ 6.0
  • PHP ≥ 8.1
  • MySQL ≥ 5.7 / MariaDB ≥ 10.3 (SQLite 亦支援)

安裝

  1. 從 GitHub Release 下載 2meet-data-optimizer-v0.1.0.zip
  2. 在 WordPress 後台 → 外掛 → 安裝外掛 → 上傳外掛
  3. 啟用後執行 wp tmdo doctor 驗證

整合 AddOn(選用)

主外掛只覆蓋 WordPress 原生 4 entity meta。若使用 HivePress / WooCommerce / LatePoint / 2meet-* 系列等外掛並希望也享有反 EAV 加速,請額外安裝對應 AddOn:

AddOn 對應外掛
2meet-data-optimizer-hub-addon 2meet-hub-core
2meet-data-optimizer-spoke-addon 2meet-spoke-sso
2meet-data-optimizer-hivepress-addon hivepress + 12 HP 擴充
2meet-data-optimizer-woocommerce-addon woocommerce
2meet-data-optimizer-latepoint-addon latepoint
2meet-data-optimizer-infocards-addon 2meet-infocards
2meet-data-optimizer-bookings-addon 2meet-bookings
2meet-data-optimizer-quotation-addon 2meet-quotation
2meet-data-optimizer-mobile-bridge-addon 2meet-mobile-bridge
2meet-data-optimizer-collab-addon 2meet-collab
2meet-data-optimizer-playlist-addon 2meet-playlist

WP-CLI 速查

wp tmdo status                  # 整體狀態
wp tmdo doctor                  # 健診(schema drift / 表對齊 / index
wp tmdo benchmark hot_post --samples=200
wp tmdo migrate hot_post        # 執行 backfill
wp tmdo verify hot_post         # 比對 postmeta 與 zone 表
wp tmdo cutover hot_post        # 讀寫切到 zone 表
wp tmdo rollback hot_post       # 退回 postmeta
wp tmdo cleanup --archive-expired

公開 API(給其他外掛)

// 通用 4-entity 讀寫
TMDO_API::set_entity( 'user', $user_id, 'membership_level', 'gold' );
$level = TMDO_API::get_entity( 'user', $user_id, 'membership_level' );

// Schema 註冊
add_action( 'tmdo_register_entity_fields', function ( $registry_class ) {
    $registry_class::register_group( 'user', 'my_group', [
        [ 'key' => 'my_field', 'type' => 'text', 'searchable' => true ],
    ] );
} );

// 自訂表註冊(給其他外掛的表加入 doctor 監控)
add_action( 'tmdo_register_custom_tables', function ( $registry ) {
    $registry->register( 'my-plugin', [
        'table_name' => 'my_table',
        'primary_key' => 'id',
        'expected_columns' => [ ... ],
    ] );
} );

向後相容:WPDO_API / WPDO_Schema_Registry 等舊類別名透過 class_alias() 仍可使用(v0.2.0 起加 deprecation notice)。


授權

GPL-2.0-or-later


文件

S
Description
通用 WordPress 反 EAV 引擎(四象限扁平表)— 取代 wp-data-optimizer
Readme 1.1 MiB
v1.0.0 Latest
2026-07-31 09:50:40 +08:00
Languages
PHP 94.5%
JavaScript 3.8%
CSS 1.6%
Shell 0.1%