WordPress 5.6引入了一个新的UI界面,允许网站管理员选择加入主要版本的自动更新。
什么是主要版本和次要版本?
简单来说,主要版本是指大版本,比如 4.9、5.0、5.1、5.2 ……
而次要版本是指某个主要版本的小版本,比如 4.9.x 就称之为 4.9 的次要版本。
默认情况下,在WordPress 5.5 以及更早的版本中,如果你的WordPress允许自动更新,假如你安装的是 5.5 主要版本,然后系统就会自动更新它的次要版本,比如 5.5.3 发布的时候,你的网站就可以自动更新该版本。
但是,如果发布了 5.6 版本,你的网站并不会自动更新到该版本,而需要你在“更新”界面点击进行更新。
从 WordPress 5.6 开始,在 仪表盘 – 更新 界面,新增了一个选项,勾选后就可以允许网站从 5.5.x 自动更新到 5.6。
次要版本的自动更新一般是修补程序,对网站基本不会有什么不利影响,所以强制建议自动更新次要版本,保证网站的安全!
但是主要版本一般都会带有新功能的植入,可能会对核心做大调整,对现有网站的主题、插件可能存在兼容性问题,所以,我们不推荐开启自动更新主要版本,以避免对网站造成较大的问题。但是我们可以在本地开发环境或测试环境中去先升级测试新的主要版本是否和现有网站的主题、插件兼容,如果兼容,就在线上网站进行更新,否则不更新!
什么是核心自动更新?
WordPress的核心自动更新功能已经存在多年。WP 5.6仅引入了新的用户界面,以使加入主要版本的自动更新变得更容易。
默认情况下,WordPress会自动更新自身,但仅适用于次要版本。通过将现有WP_AUTO_UPDATE_CORE
常量设置为true
或使用allow_major_auto_core_updates
过滤器,开发人员已经可以选择加入主要版本的自动更新。
使用WordPress 5.6,网站管理员可以使用位于“更新”屏幕上的特定界面来选择加入/退出对主要版本的自动更新:
它是如何工作的?
此设置部分简单地添加了一个复选框,以允许管理员选择加入主要版本的核心自动更新。但是,它还会使用以下顺序检查是否存在任何现有的常量或过滤器,以查看默认情况下是否应选中此复选框:
- 默认情况下,未选中该复选框。
- 如果
get_site_option( 'auto_update_core_major' )
返回true
,则选中该复选框。否则未选中。复选框值更改时,此选项是存储在数据库中的选项。 - 如果
WP_AUTO_UPDATE_CORE
常量返回true
,beta
或者rc
,该复选框被选中。如果常量返回false
,minor
或者未定义,则未选中该复选框。如果设置了此常数,它将覆盖以上参数。 - 如果
allow_major_auto_core_updates
过滤钩子返回true
,则选中该复选框。如果过滤器返回false
或未使用,则未选中该复选框。如果使用此过滤器,它将覆盖以上参数。
要默认禁用该复选框,开发人员可以将WP_AUTO_UPDATE_CORE
设置为false
(禁用所有自动更新)或minor
(仅启用次要内核自动更新,这是默认行为)。必须使用wp-config.php
文件来完成。
开发人员可以选择使用allow_major_auto_core_updates
过滤器,将核心主要版本默认设置为自动更新为true
或false
。例:
add_filter( 'allow_major_auto_core_updates', '_return_false' );
如何扩展核心主要版本的自动更新功能?
该功能还检查dev
(WordPress的开发版本)和minor
更新。在该设置部分的“提交”按钮之前,有一个动作挂钩正在运行,以在需要时添加一些选项。使用after_core_auto_updates_settings_fields
动作挂钩,开发人员可以添加其他设置或文本。
例如,以下代码段添加了选择加入/退出次要版本自动更新的选项:
function my_plugin_after_core_auto_updates_settings_fields( $auto_update_settings ) {
if ( isset( $_POST['core-auto-updates-settings'] ) && wp_verify_nonce( $_POST['set_core_auto_updates_settings'], 'core-auto-updates-nonce' ) ) {
if ( isset( $_POST['my-plugin-core-auto-updates-minor'] ) && 1 === (int) $_POST['my-plugin-core-auto-updates-minor'] ) {
update_site_option( 'my_plugin_auto_update_core_minor', 1 );
} else {
update_site_option( 'my_plugin_auto_update_core_minor', 0 );
}
}
$minor_auto_updates_settings = get_site_option( 'my_plugin_auto_update_core_minor' );
?>
<p>
<input type="checkbox" name="my-plugin-core-auto-updates-minor" id="my-plugin-core-auto-updates-minor" value="1" <?php checked( $minor_auto_updates_settings, 1 ); ?> />
<label for="my-plugin-core-auto-updates-minor">
<?php _e( 'Automatically keep this site up-to-date with minor updates.', 'my-plugin' ); ?>
</label>
</p>
<?php
}
add_action( 'after_core_auto_updates_settings_fields', 'my_plugin_after_core_auto_updates_settings_fields', 10, 1 );
此代码段在主要发行版选项之后添加了一个新选项: