更新类型 #
WordPress 3.7中引入了自动后台更新,以提高安全性并简化整体更新体验。默认情况下,大多数网站都启用了 WordPress 的自动更新。在特殊情况下,插件和主题也可能会自动更新。默认情况下,翻译文件会自动更新。
在 WordPress 中,有四种类型的自动后台更新:
- 核心更新
- 插件更新
- 主题更新
- 翻译文件更新
核心更新 #
核心更新分为三种类型:
- 核心开发更新,被称为“前沿”
- 次要核心更新,例如维护和安全版本
- 主要核心版本更新
在 WordPress 5.6 之前,默认情况下,每个站点都为次要核心版本和翻译文件启用了自动更新。从 WordPress 5.6 及更高版本开始,每个新站点都会自动启用次要版本和主要版本。
已经运行开发版本的站点也默认启用对进一步开发版本的自动更新。
更新配置 #
可以使用以下两种方法之一来配置自动更新:在 中定义常量wp-config.php
,或使用插件添加过滤器。
通过 wp-config.php 进行配置 #
使用wp-config.php
,可以完全禁用自动更新,并且可以根据更新类型禁用或配置核心更新。
禁用所有更新的常量 #
核心开发人员有意识地决定启用自动更新小版本和开箱即用的翻译文件。展望未来,这将是保证您的网站保持最新和安全的最佳方式之一,因此,强烈建议您禁用这些更新。
要完全禁用所有类型的自动更新(核心或其他),请将以下内容添加到您的wp-config.php
文件中:
1 | define( 'AUTOMATIC_UPDATER_DISABLED' , true ); |
配置核心更新的常量 #
要为主要版本或开发目的启用自动更新,从WP_AUTO_UPDATE_CORE
常量开始。定义此常量的三种方式之一允许您一次全面启用或全面禁用多种类型的核心更新。
1 | define( 'WP_AUTO_UPDATE_CORE' , true ); |
WP_AUTO_UPDATE_CORE
可以用三个值之一定义,每个值产生不同的行为:
- 价值
true
– 开发、次要和主要更新都已启用 - 价值
false
– 开发、次要和主要更新都被禁用 - 值
'minor'
–启用次要更新,禁用开发和主要更新
请注意,只有已经运行开发版本的站点才会收到开发更新。
WP_AUTO_UPDATE_CORE
对于开发站点,默认值为true
. WP_AUTO_UPDATE_CORE
对于其他站点,默认值为minor
.
从 WordPress 5.6 开始,WP_AUTO_UPDATE_CORE
新 WordPress 安装的默认值为true
. WP_AUTO_UPDATE_CORE
对于新网站,默认值为minor
.
通过过滤器配置 #
使用过滤器可以对自动更新进行微调控制。
放置这些过滤器的最佳位置是必须使用的插件。
不要直接在. _ WordPress 未完全加载,可能会导致与其他应用程序(例如 WP-CLI)发生冲突。add_filter()
wp-config.php
通过过滤器禁用所有更新 #
您还可以使用以下过滤器禁用所有自动更新:
1 | add_filter( 'automatic_updater_disabled' , '__return_true' ); |
通过过滤器进行核心更新 #
要仅启用所有核心类型更新,请使用以下过滤器:
1 | add_filter( 'auto_update_core' , '__return_true' ); |
但是,假设您不想启用或禁用所有三种类型的核心更新,而是希望有选择地启用或禁用它们。这就是allow_dev_auto_core_updates
、allow_minor_auto_core_updates
和allow_major_auto_core_updates
过滤器的用武之地。
WordPress 内置了两个速记函数,可让您使用单行代码启用或禁用特定类型的核心更新。它们是__return_true和__return_false。以下是一些示例过滤器:
要专门单独启用它们(要禁用,请使用false而不是true):
123 | add_filter( 'allow_dev_auto_core_updates' , '__return_true' ); // Enable development updates add_filter( 'allow_minor_auto_core_updates' , '__return_true' ); // Enable minor updates add_filter( 'allow_major_auto_core_updates' , '__return_true' ); // Enable major updates |
对于开发人员:即使在 WordPress 目录或其任何父目录中找到 VCS 文件夹(.git、.hg、.svn 等),也要启用自动更新:
1 | add_filter( 'automatic_updates_is_vcs_checkout' , '__return_false' , 1 ); |
通过过滤器更新插件和主题 #
默认情况下,自动后台更新仅在特殊情况下发生在插件和主题上,由 WordPress.org API 响应确定,该响应由 WordPress 安全团队控制,用于修补关键漏洞。要在所有情况下启用或禁用更新,您可以利用auto_update_$type
过滤器,其中$type
将替换为“插件”或“主题”。
所有插件的自动更新
1 | add_filter( 'auto_update_plugin' , '__return_true' ); |
所有主题的自动更新:
1 | add_filter( 'auto_update_theme' , '__return_true' ); |
您可以使用__return_false
而不是__return_true
专门禁用所有插件和主题更新,甚至是来自 WordPress 安全团队的强制安全推送。
过滤器auto_update_$type
还允许更细粒度的控制,因为要更新的特定项目也被传递到过滤器中。如果您只想为特定插件启用自动更新,那么您可以使用如下代码:
123456789101112131415 | function auto_update_specific_plugins ( $update , $item ) { // Array of plugin slugs to always auto-update $plugins = array ( 'akismet' , 'buddypress' , ); if ( in_array( $item ->slug, $plugins ) ) { // Always update plugins in this array return true; } else { // Else, use the normal API response to decide whether to update or not return $update ; } } add_filter( 'auto_update_plugin' , 'auto_update_specific_plugins' , 10, 2 ); |
通过过滤器更新翻译 #
默认情况下已启用自动翻译文件更新,与次要核心更新相同。
要禁用翻译文件更新,请使用以下命令:
1 | add_filter( 'auto_update_translation' , '__return_false' ); |
通过过滤器禁用电子邮件 #
12 | // Disable update emails add_filter( 'auto_core_update_send_email' , '__return_false' ); |
此过滤器还可用于根据电子邮件 $type(成功、失败、关键)、更新类型对象 $core_update 或 $result 操作更新电子邮件:
123456 | /* @param bool $send Whether to send the email. Default true. @param string $type The type of email to send. Can be one of 'success', 'fail', 'critical'. @param object $core_update The update offer that was attempted. @param mixed $result The result for the core update. Can be WP_Error. */ apply_filters( 'auto_core_update_send_email' , true, $type , $core_update , $result ); |