要回答第一个问题
如果您查看
WP_Automatic_Updater
在中找到类
wp-admin/includes/class-wp-upgrader.php
我们注意到该方法
is_disabled
该方法使用的
should_update
确定是否允许自动更新。
这个is_disabled
方法将在以下条件下返回true,
如果DISALLOW_FILE_MODS
常量已定义且为true
如果WP_INSTALLING
如果AUTOMATIC_UPDATER_DISABLED
常量定义为true
尽管后一个常数AUTOMATIC_UPDATER_DISABLED
也与过滤器关联,automatic_updater_disabled
, 因此,即使已定义,也有可能在其他地方过滤该值,在这种情况下,最好声明以下挂钩:
add_filter( \'automatic_updater_disabled\', \'__return_true\' );
下面是从
WP_Automatic_Updater
类别:
wp-admin/includes/class-wp-upgrader.php:1730
/**
* Whether the entire automatic updater is disabled.
*
* @since 3.7.0
*/
public function is_disabled() {
// Background updates are disabled if you don\'t want file changes.
if ( defined( \'DISALLOW_FILE_MODS\' ) && DISALLOW_FILE_MODS )
return true;
if ( defined( \'WP_INSTALLING\' ) )
return true;
// More fine grained control can be done through the WP_AUTO_UPDATE_CORE constant and filters.
$disabled = defined( \'AUTOMATIC_UPDATER_DISABLED\' ) && AUTOMATIC_UPDATER_DISABLED;
/**
* Filter whether to entirely disable background updates.
*
* There are more fine-grained filters and controls for selective disabling.
* This filter parallels the AUTOMATIC_UPDATER_DISABLED constant in name.
*
* This also disables update notification emails. That may change in the future.
*
* @since 3.7.0
*
* @param bool $disabled Whether the updater should be disabled.
*/
return apply_filters( \'automatic_updater_disabled\', $disabled );
}
我还建议阅读以下链接:
配置自动后台更新
http://codex.wordpress.org/Configuring_Automatic_Background_Updates
...它详细地提供了可用常量和过滤器的列表,用于细粒度控制针对更新禁用哪些组件。
对于仅禁用自动插件更新的情况,您有:
add_filter( \'auto_update_plugin\', \'__return_false\' );
...等等
要回答您的第二个问题
(如果我错了,有人纠正我)
让我们为读者添加一些上下文,整个问题就是由此产生的twitter status 这本身就是对Yoast的WP SEO插件强制自动更新的回应,请参见以下内容,https://yoast.com/wordpress-seo-security-release/, 了解更多信息。
中有一个函数wp-includes/update.php
已命名wp_maybe_auto_update
用相同的名字在钩子上开火do_action(\'wp_maybe_auto_update\')
从内部发射wp_version_check
函数包含在同一文件中,该文件本身是一个计划事件,每天运行两次。
所以,我怀疑WordPress。org做到了这一点,因为他们在内部增加了WordPress的版本,因此由于Yoast WP SEO插件明显存在严重的安全漏洞,用户将被迫进行自动更新。
到quote Yoast自己:
由于问题的严重性,WordPress。组织团队发布了强制自动更新(谢谢!)
我不能百分之百确定这是否也会自动更新WordPress中有新版本的任何其他插件。组织存储库或是否WordPress。org可以指定哪些插件可以从其末端自动更新,也许代码中有某种东西也允许这种判断。
至于你是否可以自己使用相同的机制,好吧,对于你在WordPress中托管的插件。是的,对于官方存储库之外的存储库,我不完全确定,但您可以实例化WP_Automatic_Updater
类并为其提供一个要检查的上下文,但我认为最终我们会得到一个名为wp_update_plugins
在内部wp-includes/update.php
对照官方WordPress存储库API进行检查。
我可能不正确,所以如果有人有进一步的补充,请插话。