問題描述
我正在嘗試建立一個 WordPress 更新自動化外掛。這裡我有兩個選項來啟用和停用更新。
-
透過定義
例如:defined( 'AUTOMATIC_UPDATER_DISABLED',true )
透過 add_filter
例如:add_filter( 'allow_major_auto_core_updates', '__return_true', 1 );
我的問題是如果我透過 define 停用更新,並且還透過 add_filter 啟用它,哪一個將工作? add_filter 是否覆蓋’define’?或 define 覆蓋’add_filter’?
最佳解決方案
透過 Core_Upgrader::should_update_to_version()方法進行掃描,看起來我們可以覆蓋
defined( 'WP_AUTO_UPDATE_CORE' ) // true (all), false, minor
檢查,用於設定本地布林變數 $upgrade_dev,$upgrade_minor 和 $upgrade_major,具有以下過濾器:
...
apply_filters( 'allow_dev_auto_core_updates', $upgrade_dev )
...
apply_filters( 'allow_minor_auto_core_updates', $upgrade_minor )
...
apply_filters( 'allow_major_auto_core_updates', $upgrade_major )
...
所以這些過濾器在 WP_AUTO_UPDATE_CORE 常量檢查中有最後一個字。
類似地,automatic_updater_disabled 濾波器可以覆蓋 AUTOMATIC_UPDATER_DISABLED 常數檢查。
但請注意我們 can’t override the constant itself 。
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。