到那個時刻 安全,我們知道定期更新WordPress安裝(核心,主題和插件)的重要性,以及升級過程可能需要花費多長時間,尤其是當我們安裝了大量插件時。通常建議遵循以下步驟:

  1. 備份文件和數據庫表
  2. 禁用插件
  3. 更新資料
  4. 一對一啟用插件
  5. 檢查網站

對於單個網站而言,這可能是一項繁瑣的任務,而當我們必須更新五個,十個或更多網站時,這可能是一項煩人而又復雜的工作。

為了提高安裝安全性並簡化站點管理,WordPress 3.7引入了自動更新。默認情況下,為次要版本(即維護和安全版本)和翻譯文件啟用此功能很酷,但是可以自定義任何類型的更新。因此,在本文中,我們將研究在發布新版本的WordPress核心,主題或插件時如何自動執行升級過程。讓我們深入研究WordPress自動更新!

WordPress automatic updates

WordPress自動更新

自動更新索引

WordPress自動更新

更新和WordPress有四種類型 自動更新:

  1. 核心更新
  2. 插件更新
  3. 主題更新
  4. 翻譯文件更新

核心更新分為三個子類型:

  1. 核心發展 (僅適用於開發安裝)
  2. 次要核心更新 (維護和安全性)–在穩定安裝中默認啟用
  3. 主要核心更新

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允許我們控制核心更新(次要版本,主要版本和開發版本)。該常數可以定義如下:

#禁用所有核心更新:define('WP_AUTO_UPDATE_CORE',false); #啟用所有核心更新,包括次要和主要更新:define('WP_AUTO_UPDATE_CORE',true); #啟用次要更新:define('WP_AUTO_UPDATE_CORE','minor');

在開發中 WP_AUTO_UPDATE_CORE 默認為true。在穩定的安裝中,它默認為次要。

為了完整起見,我應該提到一個可以定義為禁用自動更新的附加常量。但是,將其值設置為true將禁用所有文件編輯,包括主題和插件安裝以及手動更新。

define('DISALLOW_FILE_MODS',true);

相反,您可能希望定義 DISALLOW_FILE_EDITS 常量,將禁用文件編輯器,但確保安裝和更新功能的安全。

相關教程: wp-config.php文件–有關如何配置WordPress的深入了解

通過API過濾器控制後台更新

配置常量提供了啟用或禁用自動更新的一般方法。但是WordPress提供了許多過濾器,可以對任何類型的更新進行更深入的控制。

注意:過濾器應在插件內使用,“必須使用的插件”是後台更新的不錯選擇。 mu-plugins駐留在內部的特定文件夾中 / wp-content 並由WordPress自動啟用。這些插件不會出現在WordPress插件屏幕中,因此它們不會被站點管理員意外禁用或刪除。要深入了解,請參閱 食典文件

首先,通過automatic_updater_disabled過濾器返回true與定義 AUTOMATIC_UPDATER_DISABLED 恆定為真 wp-config.php:

add_filter('automatic_updater_disabled','__return_true');

我們可以通過以下方式控制任何更新類型 auto_update_$type 過濾器,可根據以下值啟用或禁用更新: $類型 ('核心', '插入', '主題' 要么 '翻譯').

因此,我們可以通過以下方式返回true來自動執行所有核心更新 auto_update_core 過濾:

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');

在上面的示例中,我們剛剛啟用了自動更新。但是這些過濾器使我們可以更好地控制更新。在以下示例中,我們將自動為兩個特定的插件自動更新:

函數cb_auto_update_plugins($update,$item){$plugins = array('hello','akismet'); if(in_array($item-> slug,$plugins)){//更新插件返回true; } else {//使用默認設置返回$update; }} add_filter('auto_update_plugin','cb_auto_update_plugins',10,2);

回調函數保留兩個參數:

  1. $更新:設置是否更新的布爾值;
  2. 1TP2字幕:更新商品對象。

該功能檢查更新項是否在 $插件 數組,然後相應地返回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 過濾器控制結果和通知電子郵件。這些電子郵件可以通過返回來禁用 如下:

apply_filters('auto_core_update_send_email','__return_false');

特別是如果您打算將自動更新擴展到主要的核心和/或主題和插件版本,則您可能希望保留結果和通知電子郵件,或者根據結果或更新類型對其進行自定義。在以下示例中,如果成功,WordPress將不會發送結果電子郵件:

遇到停機和WordPress問題嗎? Kinsta是旨在節省您時間的託管解決方案! 查看我們的功能
函數cb_auto_core_update_send_email($send,$type,$core_update,$result){if(!empty($type)&& $type =='success'){//不發送電子郵件返回false; } //使用默認設置返回$send; }} add_filter('auto_core_update_send_email','cb_auto_core_update_send_email',10,4);

回調函數保留以下參數:

  • 1TP2發送 是一個布爾值,用於確定是否發送結果或通知電子郵件;
  • $類型 是一個字符串,用於設置要發送的電子郵件的類型(成功,失敗或嚴重);
  • $core_update 是更新商品對象;
  • 1TP2結果 是核心更新的結果(可以是WP_Error)。

默認情況下,當從WordPress.org收到的更新提議設置了特定標誌並且安裝無法更新時,將通知管理員。通知電子郵件在每個版本中僅發送一次。的 send_core_update_notification_email filter可以決定是否以及何時發送此類通知。應用過濾器,如下所示:

apply_filters('send_core_update_notification_email','__return_true');

最後, automatic_updates_send_debug_email 過濾器控制調試電子郵件,這些電子郵件提供有關執行的更新的有用日誌信息。默認情況下,這些電子郵件是由開發安裝發送的。返回false將阻止WordPress發送調試電子郵件,而返回true將啟用這些電子郵件,即使安裝穩定也是如此:

apply_filters('automatic_updates_send_debug_email','__return_true');

何時以及為何禁用WordPress自動更新

對於許多用戶而言,自動更新過程是一個很棒的功能,因為他們可以節省大量時間和工作。
但是即使看起來像 自動更新真的很安全,我們應該問自己,啟用所有這些功能是否總是一個好主意。

有時,我們可能會遇到主題和插件不兼容的問題,這些問題可能會中斷某些功能甚至破壞網站。如果網站依賴大量插件,則至少對於插件而言,執行手動更新可能更安全。一對一的過程使我們能夠快速檢測出自動化難以發現的問題。

此外,如果您是開發人員,則即使您不打算分發主題和插件,也應注意為其選擇的名稱。在運行更新時,WordPress在插件目錄中查找插件的新版本,如果找到了具有相同名稱的插件,則WordPress將覆蓋文件。因此,如果您想為主題和插件啟用後台更新,請確保為腳本設置唯一的名稱。

是的,對於開發人員來說,這是很多好東西。但是非開發人員用戶如何管理自動更新?

使用插件控制WordPress自動更新

如果您不是開發人員,則可以使用插件控制WordPress自動更新。

簡易更新管理器 允許管理員用戶在單個站點和站點上控制WordPress更新 多站點安裝。該插件可以管理WordPress更新的所有類型,並且可以單獨選擇主題和插件進行自動更新。其他功能與通知電子郵件,用戶阻止和記錄插件更新有關。

Easy Updates Manager - manage WordPress automatic updates

簡易更新管理器

在不兼容的情況下,可能需要快速還原到主題或插件的先前版本。 WP回滾 讓你 恢復以前的版本 插件屏幕中所有已安裝的主題和插件的列表。只需單擊“回滾”鏈接,該插件就會為您顯示所有可用版本的列表。
不幸的是,如果您的網站出現故障,WP Rollback將無濟於事,所以請不要忘記備份並仔細閱讀在線文檔。

WP Rollback

WP回滾

最後,如果您需要對WordPress安裝中的自動更新進行兼容性測試, 後台更新測試儀 將提供您所需的信息。

高級插件和主題的自動更新

作為高級WordPress插件或主題的開發人員,您有責任在產品中集成自動更新機制,以提供用戶對WordPress.org產品所期望的相同的無縫更新體驗。這已經成為當今的市場標準(有充分的理由)。您可以自己託管高級產品並開發更新機制,也可以利用諸如 Freemius, 克爾, 要么 WP更新,提供開箱即用的安全存儲庫和自動更新即服務。

概要

WordPress自動更新是一項很棒的功能,可以節省大量時間和工作,並允許我們定期更新我們的網站。但是您會啟用各種更新嗎?在下面的評論中讓我們知道。