談到安全性,我們知道定期更新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。在穩定安裝中,它預設為次要。
為了完整起見,我應該提到一個額外的常量,它可以定義為禁用自動更新。但是,將其值設定為true將禁用任何檔案編輯,甚至主題和外掛安裝以及手動更新。
define( 'DISALLOW_FILE_MODS', true );
相反,您可能更喜歡定義DISALLOW_FILE_EDITS
常量,這將禁用檔案編輯器,但保證安裝和更新功能的安全。
相關教程: wp-config.php 檔案——深入瞭解如何配置WordPress
通過API過濾器控制後臺更新
配置常量提供了啟用或禁用自動更新的通用方法。但是WordPress提供了許多過濾器,可以更深入地控制任何型別的更新。
注意:過濾器應該在外掛中使用,“必須使用外掛”是後臺更新的一個不錯的選擇。mu-plugins駐留在/wp-content內的特定資料夾中,並由WordPress自動啟用。這些外掛不會出現在WordPress外掛螢幕中,因此站點管理員不會意外禁用或刪除它們。如需更深入的瞭解,請參閱Codex文件
首先,通過automatic_updater_disabled過濾器返回true與AUTOMATIC_UPDATER_DISABLED
在wp-config.php中將常量定義為true具有相同的效果:
add_filter( 'automatic_updater_disabled', '__return_true' );
我們可以通過控制任何更新型別學auto_update_$type
這使過濾器或禁用更新取決於價值$type
('core'
,'plugin'
,'theme'
或'translation'
)。
因此,我們可以通過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 plugin return true; } else { // use default settings return $update; } } add_filter( 'auto_update_plugin', 'cb_auto_update_plugins', 10, 2 );
回撥函式保留兩個引數:
$update
: 設定是否更新的布林值;$item
:更新offer物件。
該函式檢查要更新的專案是否在$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 email return false; } // use default settings return $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
過濾器控制除錯電子郵件,它提供有關執行更新的有用日誌資訊。預設情況下,這些電子郵件由開發安裝傳送。返回false將阻止WordPress傳送除錯電子郵件,而返回true將啟用這些電子郵件,即使在穩定安裝中:
apply_filters( 'automatic_updates_send_debug_email', '__return_true' );
何時以及為何禁用WordPress自動更新
自動更新過程對許多使用者來說是一項很棒的功能,因為他們可以節省大量時間和工作。但即使看起來自動更新真的很安全,我們也應該問問自己,啟用所有這些是否總是一個好主意。
有時,我們可能會遇到主題和外掛的不相容問題,這可能會中斷某些功能甚至破壞網站。如果網站依賴於大量外掛,則執行手動更新可能更安全,至少對於外掛而言。一對一的過程使我們能夠快速檢測自動化難以發現的問題。
此外,如果您是一名開發人員,即使您不打算分發它們,您也應該小心為主題和外掛選擇的名稱。執行更新時,WordPress 會在外掛目錄中查詢外掛的新版本,並在找到同名外掛時覆蓋檔案。因此,如果您想為主題和外掛啟用後臺更新,請務必為您的指令碼設定唯一的名稱。
是的,這對開發人員來說是很多好東西。但是非開發人員使用者如何管理自動更新?
使用外掛控制WordPress自動更新
如果您不是開發人員,則可以使用外掛控制WordPress自動更新。
Easy Updates Manager允許管理員使用者在單站點和多站點安裝上控制WordPress更新。該外掛允許管理WordPress更新的所有型別,並且可以單獨選擇主題和外掛進行自動更新。附加功能與通知電子郵件、使用者阻止和記錄外掛更新有關。
Easy Updates Manager外掛
在不相容的情況下,可能需要快速恢復到主題或外掛的先前版本。WP Rollback允許您從外掛螢幕恢復任何已安裝主題和外掛的先前版本。只需單擊回滾連結,外掛就會向您顯示所有可用版本的列表。不幸的是,如果您的網站出現故障,WP回滾將無濟於事,所以不要忘記備份並仔細閱讀線上文件。
WP Rollback外掛
最後,如果您需要對WordPress安裝中的自動更新進行相容性測試,Background Update Tester將提供您需要的資訊。
高階外掛和主題的自動更新
作為高階WordPress外掛或主題的開發人員,您有責任將自動更新機制整合到您的產品中,以提供使用者對WordPress.org產品所期望的無縫更新體驗。這已成為當今的市場標準(有充分的理由)。您可以自己託管高階產品並開發更新機制,或利用Freemius、Kernl或WP Updates等平臺,這些平臺提供安全的儲存庫和開箱即用的自動更新即服務。
小結
WordPress自動更新是一項很棒的功能,可以為我們節省大量時間和工作,並使我們能夠定期更新我們的網站。但是你會啟用各種更新嗎?請在下面的評論中告訴我們。
評論留言