问题描述
我正在尝试创建一个 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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。