了解更多关于WordPress自动更新的信息
说到安全,我们知道定期更新WordPress安装(核心、主题和插件)的重要性,以及升级过程可能需要多长时间,尤其是当我们安装大量插件的时候。通常建议遵循以下步骤:
备份文件和数据库表
禁用插件
更新
启用插件
查看网站
对于单个网站来说,这可能是一项繁琐的任务,而当我们必须更新五个、十个或更多网站时,这可能是一项令人讨厌的复杂工作。
出于提高安装安全性和简化站点管理的特殊目的,WordPress 3.7引入了自动更新。默认情况下,次要版本(即维护和安全版本)和翻译文件启用这一酷功能,但任何类型的更新都可以定制。因此,在本文中,我们将研究如何在发布新版本的WordPress核心、主题或插件时自动执行升级过程。让我们了解更多关于WordPress自动更新!
WordPress自动更新
WordPress自动更新
通过wp-config.php控制背景更新
通过API过滤器控制后台更新
结果、通知和调试电子邮件
以及禁用WordPress自动更新的时间和原因。
使用插件控制WordPress自动更新
高级插件和主题的自动更新
WordPress自动更新
有四种类型的更新和WordPress自动更新:
核心更新
更新插件
主题更新
翻译文档更新
更新分为三个子类型:
开发(仅适用于开发和安装)
二级更新(维护和安全)-在稳定安装中默认启用。
主要更新
WordPress允许你为任何类型的自动更新过程提供两个wp-config.php常数和大量的API过滤器。
通过wp-config.php控制背景更新
WordPress提供了几个wp-config.php常量,允许我们控制自动更新。将AUTOMATIC_UPDATER_DISABLED设置为true将禁用任何类型的自动升级:
define( ‘AUTOMATIC_UPDATER_DISABLED’, true );
WP_AUTO_UPDATE_CORE允许我们控制核心更新(次要、主要和开发版本)。该常数可定义如下:
# Disables all core updates:define( ‘WP_AUTO_UPDATE_CORE’, false );# Enables all core updates, including minor and major:define( ‘WP_AUTO_UPDATE_CORE’, true );# Enables minor updates:define( ‘WP_AUTO_UPDATE_CORE’, ‘minor’ );
WP_AUTO_UPDATE_CORE在开发安装中默认为真。在稳定安装中,默认情况下它是次要的。
为了完整起见,我应该提到一个额外的常数,它可以被定义为禁用自动更新。但是,将其值设置为true将禁用任何文件编辑,甚至主题和插件安装以及手动更新。
define( ‘DISALLOW_FILE_MODS’, true );
相反,您可能更喜欢定义常量DISALLOW_FILE_EDITS,这将禁用文件编辑器,但保证安装和更新功能的安全性。
相关教程:wp-config.php文件-了解更多关于如何配置WordPress。
通过API过滤器控制后台更新
配置常量提供了启用或禁用自动更新的通用方法。但是WordPress提供了许多过滤器来更深入地控制任何种类的更新。
注意:过滤器应该在插件中使用。后台更新“必须用插件”是个不错的选择。Mu插件位于/wp-content中的一个特定文件夹中,由WordPress自动启用。这些插件不会出现在WordPress插件屏幕上,所以网站管理员不会不小心禁用或删除它们。欲了解更多信息,请参考法典文件。
首先,通过automatic_updater_disabled filter返回true与wp-config.php中AUTOMATIC _ UPDATER _ DISABLED将constant定义为true效果相同:
add_filter( ‘automatic_updater_disabled’, ‘__return_true’ );
我们可以通过控制任何更新类型来键入auto_update_$type。这使得过滤器或禁用更新取决于值$type(‘核心’,’插件’,’主题’或’翻译’)。
因此,我们可以通过auto_update_core过滤器返回true来自动执行所有核心更新:
add_filter( ‘auto_update_core’, ‘__return_true’ );
在以下示例中,我们启用了主题、插件和翻译的自动更新:
add_filter( ‘auto_update_theme’, ‘__return_true’ );add_filter( ‘auto_update_plugin’, ‘__return_true’ );add_filter( ‘auto_update_translation’, ‘__return_true’ );
在上面的例子中,我们刚刚启用了自动更新。但是这些过滤器允许我们更好地控制更新。在下面的例子中,我们将自动更新两个特定的插件:
function cb_auto_update_plugins ( $update, $item ) {$plugins = array ( ‘hello’, ‘akismet’ );if ( in_array( $item->slug, $plugins ) ) {// update pluginreturn true; } else {// use default settingsreturn $update; }}add_filter( ‘auto_update_plugin’, ‘cb_auto_update_plugins’, 10, 2 );
回调函数包含两个参数:
$update:设置是否更新的布尔值;
$item:更新报价对象。
这个函数检查要更新的项目是否在$plugins数组中,然后相应地返回true或false。
最后,我们可以通过以下过滤器返回true或false来区分开发、次要和主要更新:
add_filter( ‘allow_dev_auto_core_updates’, ‘__return_false’ );add_filter( ‘allow_minor_auto_core_updates’, ‘__return_true’ );add_filter( ‘allow_major_auto_core_updates’, ‘__return_true’ );
我们知道有时更新会失败。最坏的情况是,更新失败后网站可能会关闭。但幸运的是,我们可以要求WordPress在任何更新(或尝试)后通过电子邮件通知我们。
结果、通知和调试电子邮件
根据更新过程的结果,WordPress将向管理员地址发送不同的电子邮件:
自动核心更新后发送结果电子邮件;
当WordPress无法运行自动更新时发送通知电子邮件;
调试邮件在WordPress的开发版本中发送。
每当自动更新成功或失败时,WordPress将发送一封结果或通知电子邮件,包含以下主题之一:
你的网站已经更新到WordPress XXX(成功案例)
WordPress XXX可用。请更新!(更新失败,需要手动更新:案例失败)
紧急:您的网站可能会因为更新失败而关闭(更新失败和WordPress可能会关闭:案例关键)
Auto_core_update_send_email过滤器控制结果和通知消息。您可以通过返回false来禁用这些电子邮件,如下所示:
apply_filters( ‘auto_core_update_send_email’, ‘__return_false’ );
特别是如果您计划将自动更新扩展到主要核心和/或主题和插件版本,您可能更喜欢启用结果和通知电子邮件,或者根据结果或更新类型定制它们。在下面的例子中,如果成功,WordPress将不会发送结果邮件:
function cb_auto_core_update_send_email ( $send, $type, $core_update, $result ) {if ( !empty( $type ) && $type == ‘success’ ) {// don’t send emailreturn false; }// use default settingsreturn $send; }}add_filter( ‘auto_core_update_send_email’, ‘cb_auto_core_update_send_email’, 10, 4 );
回调保留以下参数:
$send是一个布尔值,用来决定是发送结果还是通知邮件;
$type是一个字符串,用于设置要发送的电子邮件的类型(成功、失败或关键);
$core_update是更新的报价对象;
$result是核心更新的结果(可以是WP_Error)。
默认情况下,当从WordPress.org收到的更新建议设置了特定标志并且安装未能更新时,管理员将收到通知。每个版本只会发送一封通知电子邮件。send _ core _ update _ notification _ email过滤器允许您自行决定是否以及何时发送此类通知。按如下方式应用过滤器:
apply_filters( ‘send_core_update_notification_email’, ‘__return_true’ );
最后,automatic _ updates _ send _ debug _ email过滤器控制调试电子邮件,它提供有关执行更新的有用日志信息。默认情况下,这些电子邮件由开发安装发送。True将阻止WordPress发送调试邮件,而true将启用虚假邮件,即使在稳定的安装中:
apply_filters( ‘automatic_updates_send_debug_email’, ‘__return_true’ );
以及禁用WordPress自动更新的时间和原因。
自动更新过程对许多用户来说是一个很好的功能,因为他们可以节省大量的时间和工作。但是,即使自动更新看起来真的很安全,我们也应该问问自己,启用所有这些功能是否总是一个好主意。
有时,我们可能会遇到主题和插件不兼容的情况,这可能会中断一些功能,甚至破坏网站。如果网站依赖大量的插件,进行手动更新可能会更安全,至少对于插件来说是这样。一对一的流程使我们能够快速发现自动化难以发现的问题。
此外,如果你是一名开发者,即使你不打算分发它们,你也应该小心你为主题和插件选择的名字。更新时,WordPress会在插件目录中寻找新版本的插件,当找到同名插件时会覆盖文件。因此,如果你想为主题和插件启用后台更新,一定要为你的脚本设置一个唯一的名字。
是的,这对开发者来说是一大堆好事。但是非开发者用户如何管理自动更新呢?
使用插件控制WordPress自动更新
如果你不是开发者,你可以使用插件来控制WordPress自动更新。
简易更新管理器允许管理员用户控制单站点和多站点安装的WordPress更新。这个插件允许管理所有类型的WordPress更新,主题和插件可以独立选择自动更新。附加功能与通知电子邮件、用户阻止和记录插件更新相关。
轻松更新管理器插件
在不兼容的情况下,可能有必要快速恢复到先前版本的主题或插件。WP回滚允许您从插件屏幕恢复任何已安装的主题和插件的先前版本。只需点击回滚链接,插件将显示所有可用版本的列表。不幸的是,如果你的网站关闭了,WP回滚将无济于事,所以不要忘记备份并仔细阅读在线文档。
WP回滚插件
最后,如果你需要测试WordPress安装中自动更新的兼容性,后台更新测试器会提供你需要的信息。
高级插件和主题的自动更新
作为高级WordPress插件或主题的开发者,您有责任将自动更新机制集成到您的产品中,从而为用户提供WordPress产品所期望的无缝更新体验。这已经成为今天的市场标准(有充分的理由)。您可以托管高级产品并自行开发更新机制,或者利用Freemius、Kernl或WP Updates等平台,这些平台提供安全的存储库和开箱即用的自动更新服务。
总结
WordPress自动更新是一个很棒的功能,它可以节省我们很多时间和工作,使我们能够定期更新我们的网站。但是你会启用各种更新吗?请在下面的评论中告诉我们。