自動バックグラウンド更新の設定

更新タイプ

自動バックグラウンド更新機能はセキュリティの強化とアップグレードエクスペリエンス全体の効率化を目的として WordPress 3.7 で導入されました。デフォルトでは (メンテナンスやセキュリティのための) マイナーリリースおよび翻訳ファイルのみがこの自動更新の対象になります。

WordPress には4種類の自動更新機能があります。

  1. コアファイル更新
  2. プラグイン更新
  3. テーマ更新
  4. 翻訳ファイル更新

コアの更新

コアの更新はさらに3つの種類に分けられます。

  1. コアの開発版更新 (「ブリーディング・エッジ」)
  2. コアのマイナー更新。メンテナンス・セキュリティリリース
  3. コアのメジャーリリース更新

デフォルトでは、自動更新はコアのマイナー更新および翻訳ファイルの更新に対してのみ適用されます。開発バージョンを既に実行しているサイトでは、初期設定で有効になっている追加の開発バージョンへの自動更新もあります。

アップデート設定

自動更新の設定方法は、wp-config.php に定数を定義する方法と、プラグインでフィルターを追加する方法の2つがあります。

wp-config.php を使った設定

wp-config.php を使って、自動更新を完全に無効化したり、コアの更新を無効化したり、更新の種類に応じて設定したりすることができます。

すべての更新を無効化する定数

コアの開発者は、マイナーリリースと翻訳ファイルの自動更新を最初から有効化するという意識的な決定を行いました。自動更新は皆さんのサイトを最新かつ安全に保つための最良の方法のひとつであるため、今後は、これらの更新を無効化することを強く非推奨とします。

コアを含むすべての自動更新を完全に無効化するには、wp-config.php ファイルに以下を追加してください。

define( 'AUTOMATIC_UPDATER_DISABLED', true );

コアアップデートを設定する定数

メジャーリリースの利用や開発目的のために自動更新を有効化するには、WP_AUTO_UPDATE_CORE 定数から始める必要があります。この定数を3つの方法のいずれかで定義すると、いくつかのタイプのコアアップデートを一括で有効化したり、一括で無効化したりできます。

define( 'WP_AUTO_UPDATE_CORE', true );

WP_AUTO_UPDATE_CORE は、3つの値のいずれかで定義することができ、それぞれ異なる動作をします。

  • 値が true の場合 – 開発版、マイナー、メジャーの各アップデートをすべて有効化
  • 値が false の場合 – 開発版、マイナー、メジャーの各アップデートをすべて無効化
  • 値が 'minor' の場合 – マイナーアップデートを有効化、開発版、メジャーアップデートは無効化

なお、開発版のアップデートは、すでに開発版を運用しているサイトにのみ適用されます。

開発サイトでは、WP_AUTO_UPDATE_CORE のデフォルト値は true です。その他のサイトでは、WP_AUTO_UPDATE_CORE のデフォルト値は minor です。

フィルターによる設定

フィルターを使用することで、自動更新をきめ細かくコントロールすることができます。

これらのフィルターを配置する場所としては、must-use プラグインが最適です。

wp-config.php に直接 add_filter() の呼び出しを追加しないでください。WordPress が完全に読み込まれていないため、WP-CLI などの他のアプリケーションとのコンフリクトを引き起こす可能性があります。

フィルター経由のすべてのアップデートを無効化

また、以下のフィルターを使って、すべての自動アップデートを無効化することもできます。

add_filter( 'automatic_updater_disabled', '__return_true' );

フィルター経由のコアアップデート

すべてのコアタイプのアップデートのみを有効にするには、以下のフィルターを使用します。

add_filter( 'auto_update_core', '__return_true' );

3種類のコア更新を有効化または無効化する代わりに、一部のみ自動更新の有効・無効を選択したい場合もあるかもしれません。そんな時には allow_dev_auto_core_updatesallow_minor_auto_core_updatesallow_major_auto_core_updates フィルタが利用できます。

WordPress ビルトインのショートハンドが2つあり、特定の種類のコア更新を一行で有効化・無効化できます。__return_true と __return_false の2つで、以下のようなフィルタが使えます。

開発版 (ナイトリービルド) の更新を明確に有効化するには以下を記入します (無効化にするには、true ではなく false を使用します)。

add_filter( 'allow_dev_auto_core_updates', '__return_true' );           // Enable development updates
add_filter( 'allow_minor_auto_core_updates', '__return_true' );         // Enable minor updates
add_filter( 'allow_major_auto_core_updates', '__return_true' );         // Enable major updates

開発者の方へ: WordPress ディレクトリやその親ディレクトリに VCS フォルダー (.git、.hg、.svn など) があっても、自動的にアップデートできるようにするには、以下のコードをご利用ください。

add_filter( 'automatic_updates_is_vcs_checkout', '__return_false', 1 );

プラグインとテーマ更新

プラグインとテーマの自動更新はデフォルトでは無効化されています。有効化するには auto_update_$type フィルタの $type を “plugin” または “theme” に書き換えて使用します。

プラグインの自動更新を有効化するには以下を記入します。

add_filter( 'auto_update_plugin', '__return_true' );

テーマの自動更新を有効化するには以下を記入します。

add_filter( 'auto_update_theme', '__return_true' );

__return_true の代わりに __return_false を使用すると、すべてのプラグインやテーマのアップデートを無効化することができます。WordPress セキュリティチームからの強制的なセキュリティプッシュも無効化されますので、ご注意ください。

auto_update_$type フィルターでは、更新する特定の項目もフィルターに渡されるため、より細かい制御が可能です。もし、特定のプラグインに対してのみ自動更新を有効にしたい場合は、次のようなコードを使用できます。

function auto_update_specific_plugins ( $update, $item ) {
	// Array of plugin slugs to always auto-update
	$plugins = array (
		'akismet',
		'buddypress',
	);
	if ( in_array( $item->slug, $plugins ) ) {
		 // Always update plugins in this array
		return true;
	} else {
	 	// Else, use the normal API response to decide whether to update or not
		return $update;
	}
}
add_filter( 'auto_update_plugin', 'auto_update_specific_plugins', 10, 2 );

翻訳の更新

翻訳ファイルの自動更新はマイナーバージョンアップグレードと同じくデフォルトで有効化されています。

翻訳ファイルの自動更新を無効化するには以下を記入します。

add_filter( 'auto_update_translation', '__return_false' );

メールの無効化

// Disable update emails
add_filter( 'auto_core_update_send_email', '__return_false' );

このフィルターは、メール $type (success, fail, critical)、更新タイプ、オブジェクト $core_update、または $result に応じて、更新メールを操作するためにも使用できます。

/* @param bool   $send        Whether to send the email. Default true.
@param string $type        The type of email to send. Can be one of 'success', 'fail', 'critical'.
@param object $core_update The update offer that was attempted.
@param mixed  $result      The result for the core update. Can be WP_Error.
*/
apply_filters( 'auto_core_update_send_email', true, $type, $core_update, $result );

リソース

この記事は役に立ちましたか ? どうすればさらに改善できますか ?