feat(back-compat): 加入 WPDO_* class alias(E3)

核心的 class-tmdo-back-compat.php 在 plugins_loaded:4 執行,AddOn 於 :6
才載入,所以核心的 alias 表涵蓋不到 AddOn 類別 —— 姊妹外掛或第三方若
以 WPDO_* 名稱引用本 AddOn 的類別會直接 fatal。

新增 includes/back-compat-aliases.php,於 plugins_loaded:7 為本 AddOn
自有類別建立 WPDO_ alias;主檔加入 require。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TbG1keQQ7XBa7qMQY16KCY
This commit is contained in:
2026-07-31 06:03:47 +08:00
parent ae6ac7eba3
commit 87bbcb6d7a
2 changed files with 32 additions and 0 deletions
+1
View File
@@ -29,6 +29,7 @@ define( 'TMDO_INFOCARDS_FILE', __FILE__ );
require_once TMDO_INFOCARDS_PATH . 'includes/class-tmdo-infocards-bootstrap.php'; 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/ 實作。 * Phase 4 任務:完成本 AddOn 的 includes/ 實作。
* *
+31
View File
@@ -0,0 +1,31 @@
<?php
/**
* Backward-compat class aliases for the infocards AddOn.
*
* Sister plugins and third-party code may still reference the WPDO_* class
* names from wp-data-optimizer. The core plugin aliases its own classes in
* class-tmdo-back-compat.php, but it runs before AddOns load (plugins_loaded:4
* vs :6), so each AddOn must alias its own classes here.
*
* @package TMDO
*/
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
add_action(
'plugins_loaded',
static function () {
$aliases = array(
'TMDO_Infocards' => 'WPDO_Infocards',
'TMDO_Infocards_Bootstrap' => 'WPDO_Infocards_Bootstrap',
);
foreach ( $aliases as $tmdo_class => $wpdo_alias ) {
if ( class_exists( $tmdo_class, false ) && ! class_exists( $wpdo_alias, false ) ) {
class_alias( $tmdo_class, $wpdo_alias );
}
}
},
7
);