Files
2meet-data-optimizer-infoca…/2meet-data-optimizer-infocards-addon.php
T
wpdev cf47f141c5
Tests / PHP Lint (pull_request) Successful in 12s
fix: 修復 partner 偵測時序 bug(AddOn 從未生效)+ IG meta_key 錯配
TMDO_Infocards::register() 舊版在 bootstrap 當下以 class_exists('TMEETIC_*')
偵測 partner,失敗即 early return。但本 AddOn bootstrap 掛在 plugins_loaded:6,
而 2meet-infocards 要到 :20(tmeetic_run)才 require 自身類別——在 :6 當下
TMEETIC_* 一律不存在,偵測必定失敗,兩個註冊 hook 從未被掛上,整個 AddOn
等同未啟用。

三處修法:
1. 偵測從 bootstrap 移進 hook callback 內執行,hook 一律先掛上
2. 偵測改以 TMEETIC_VERSION / TMEETIC_PLUGIN_DIR 常數優先(檔案解析當下即
   define,早於 plugins_loaded),class_exists() 退為後備
3. bootstrap priority 6 → 3;wpdo_register_custom_tables callback prio 設 5,
   讓本 AddOn 較豐富的定義勝過主外掛無 expected_columns 的版本

同時修正 IG token 兩個欄位的 meta_key 錯配(tmeetic_ig_access_token_enc /
tmeetic_ig_token_expiry),以及 registry 索引 config key expected_indexes →
indexes。

實測驗證:
- wpdo_register_fields 掛載 prio 10、wpdo_register_custom_tables prio 5
- 2meet_vendor_profiles 由本 AddOn 註冊(16 欄位 / 1 索引 / doctor_callback)
- 缺 expected_columns 由 26/29 降為 0/46
- wp wpdo doctor 60 OK / 0 FAIL;anti-EAV lint 通過;站台 200/200
2026-08-08 18:47:23 +08:00

47 lines
1.9 KiB
PHP

<?php
/**
* Plugin Name: 2meet Data Optimizer — Infocards AddOn
* Plugin URI: https://2meet.io/2meet-data-optimizer/infocards
* Description: 2meet-infocards 整合:hp_vendor 9 postmeta (3 Hot tmeetic_profile_* + 6 Cold tmeetic_ig_*) + 3 vendor profile 表 + doctor check
* Version: 0.1.1
* Requires at least: 6.0
* Tested up to: 6.9.4
* Requires PHP: 8.1
* Requires Plugins: 2meet-data-optimizer, 2meet-infocards
* Author: 2meet
* Author URI: https://2meet.io
* License: GPL-2.0-or-later
* License URI: https://www.gnu.org/licenses/gpl-2.0.html
* Text Domain: tmdo-infocards
*
* TablePrefix: ^2meet_(vendor_profiles|cards|theme_styles)$
* Domain Path: /languages
*
* @package TMDO_INFOCARDS
*/
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
define( 'TMDO_INFOCARDS_VERSION', '0.1.1' );
define( 'TMDO_INFOCARDS_PATH', plugin_dir_path( __FILE__ ) );
define( 'TMDO_INFOCARDS_URL', plugin_dir_url( __FILE__ ) );
define( 'TMDO_INFOCARDS_FILE', __FILE__ );
require_once TMDO_INFOCARDS_PATH . 'includes/class-tmdo-infocards-bootstrap.php';
require_once TMDO_INFOCARDS_PATH . 'includes/back-compat-aliases.php';
/**
* Phase 4 任務:完成本 AddOn 的 includes/ 實作。
*
* @see ~/.claude/plans/wp-data-optimizer-2meet-data-optimizer-zesty-liskov.md
*/
// priority 3(其餘 AddOn 慣例為 6):核心的 `fire_registration()` 最早在
// plugins_loaded:4 觸發,在 :6 bootstrap 會**必定錯過第一次註冊**,而
// Custom_Table_Registry 是「先註冊者勝」——主外掛 2meet-infocards 的 closure 在
// 檔案解析時就掛好,會在 :4 先以無 expected_columns 的版本佔走 key。
// 核心的 TMDO_API / TMDO_Custom_Table_Registry 於 file-parse 時(主檔 126/127/179 行)
// 即已 require,故提前到 :3 是安全的。
add_action( 'plugins_loaded', array( 'TMDO_Infocards_Bootstrap', 'init' ), 3 );