• WordPress 3.7の自動バックグラウンド更新は更新種別を分けて制御する

WordPress 3.7の自動バックグラウンド更新は更新種別を分けて制御する

公開日: 執筆:佐藤

WordPress 3.7の自動バックグラウンド更新は、すべての更新を一括で許可する機能ではありません。通常のサイトでは、保守とセキュリティーのためのCoreマイナー更新を自動化し、Coreのメジャー更新、プラグイン、テーマは別に判断します。

自動更新を止める必要がある場合も、先に更新対象を特定します。Coreだけを制御するならWP_AUTO_UPDATE_COREを使い、自動更新機能全体を止めるAUTOMATIC_UPDATER_DISABLEDとは分けます。

Core更新は開発版、マイナー版、メジャー版に分ける

WordPress 3.7の公式発表は、保守とセキュリティーの更新を、多くのサイトでバックグラウンド適用できると案内しています。たとえば、3.7から3.7.1への更新です。3.7から次のメジャー版への更新とは同じ扱いではありません。

WordPress 3.7のCore処理は、Core更新を次の三種類に分けます。

Core更新の種類 例 通常の安定版サイトにおける初期判断
開発版更新 3.7の開発版から次の開発版 開発版を利用している場合に対象
マイナー更新 3.7から3.7.1 有効
メジャー更新 3.7から3.8 無効

この区分を確認せず、「自動更新を有効にするか」とだけ考えると、必要なセキュリティー更新まで止めるか、試験していないメジャー更新まで許可することになります。

WP_AUTO_UPDATE_COREはCoreだけを制御する

WP_AUTO_UPDATE_COREは、Coreの自動更新範囲を指定する定数です。wp-config.phpへ記載するときは、次の三値を区別します。

// Coreのマイナー更新だけを許可する
define( 'WP_AUTO_UPDATE_CORE', 'minor' );

// Coreの開発版、マイナー版、メジャー版を許可する
define( 'WP_AUTO_UPDATE_CORE', true );

// Coreの自動更新を許可しない
define( 'WP_AUTO_UPDATE_CORE', false );

通常の安定版サイトで'minor'を指定する設定は、標準のCore更新範囲を明示するものです。trueはメジャー更新まで許可します。テーマやプラグインの互換性確認を省けるという意味ではありません。

さらに細かく制御する場合は、allow_dev_auto_core_updates、allow_minor_auto_core_updates、allow_major_auto_core_updatesの各フィルターがあります。更新方針を一つの定数で表せるなら、複数のフィルターへ分散させません。どのコードが最終判断を変えているか追えなくなるためです。

AUTOMATIC_UPDATER_DISABLEDは全体を止める

AUTOMATIC_UPDATER_DISABLEDをtrueにすると、Coreだけでなく、自動バックグラウンド更新機能全体を止めます。

define( 'AUTOMATIC_UPDATER_DISABLED', true );

自動更新の制御を解説する公式記事は、この設定が翻訳の更新や更新通知メールにも影響すると説明しています。Coreのマイナー更新だけを止めたいという理由で使う設定ではありません。

目的 選ぶ制御 避ける混同
Coreの更新範囲を決める WP_AUTO_UPDATE_CORE 自動更新機能全体の停止
Coreの一種類だけを細かく変える Core種別ごとのフィルター すべてのCore更新の一括変更
個別の更新候補を判断する auto_update_coreなど 更新種別の初期値そのもの
自動更新機能を全面停止する AUTOMATIC_UPDATER_DISABLED Coreだけの停止

全面停止を選ぶなら、代わりに誰が、いつ、保守とセキュリティーの更新を適用するかを決めます。停止コードを入れただけでは、更新作業を引き受けたことになりません。

プラグイン、テーマ、翻訳はCoreと別に扱う

WordPress 3.7の自動更新処理は、core、plugin、theme、translationを別の種類として扱います。Core処理の説明では、プラグイン、テーマ、Coreのメジャー版は通常、自動更新の対象外です。翻訳とCoreのマイナー版は対象になります。

個別候補の最終判断には、auto_update_core、auto_update_plugin、auto_update_theme、auto_update_translationという種類別のフィルターがあります。プラグインを一つだけ自動更新したい場合も、名前だけで許可せず、更新対象の識別子、対応するWordPress版、停止時の復旧手順を決めます。

プラグインとテーマを標準で更新しないことは、手動確認が不要という意味ではありません。管理画面の更新通知、脆弱性の連絡、互換性情報を確認する担当が必要です。

設定値だけで実行可能とは限らない

自動更新を許可しても、WordPressが無人でファイルを書き換えられなければ実行されません。WordPress 3.7の処理は、少なくとも次を確認します。

  • 自動更新機能が全面停止されていないか
  • 更新先へ無人で書き込めるか
  • FTP接続情報の入力を求められないか
  • WordPress本体がSubversionまたはGitの管理下にないか
  • 更新候補が利用中のPHPとMySQLの条件を満たすか
  • Coreファイルの検査と更新用ファイルの取得が成功するか

「3.7へ更新したのに自動更新されない」という場合は、定数を追加する前に、更新結果メールと管理画面、ファイル所有者、FTP入力の有無、バージョン管理を確認します。失敗原因を残したまま、フィルターで判定だけを上書きしません。

更新方針には確認と復旧の担当を付ける

設定は、更新作業の一部にすぎません。小規模な会社サイトでも、次の順で運用を決めます。

  1. Core、プラグイン、テーマ、翻訳ごとに、自動と手動の範囲を決める
  2. データベースとファイルのバックアップを取り、復元できるか確認する
  3. 更新後に、トップページ、問い合わせ、管理画面、定期処理を確認する
  4. 成功、失敗、更新前後の版、確認者を記録する
  5. 自動更新を止めた対象には、手動更新の期限と担当者を付ける

保守を制作会社へ委託しても、更新方針、管理者メール、バックアップ、契約終了後の設定はサイト所有者が確認できる状態にします。誰も更新しない状態を作るくらいなら、Coreのマイナー更新を止める理由はありません。

戻る