SP用メニューボタン
ソレゾレブログ

技術的な事だったり日常の気になる事だったり

WordPressの自動更新を全てオフにしたり個別にオフにしたりする方法とその設定パターン

スポンサーリンク

この記事は、Wordpressで有効なセキュリティの一覧についてまとめた下記ブログの下位文章です。気になる方は親文章も参照してみてください。

尚、この機能の確認はWordpress5.8で行っています。

WordPressの自動更新機能

WordPressには便利な機能として、各機能をバックグラウンドで自動的に更新する機能が提供されています。この機能はWordPress3.7で導入されました。自動更新の対象となる項目は下記です。

  • WordPressコアファイル
  • プラグイン
  • テーマ
  • 翻訳ファイル

各Wordpressバージョンでの自動更新対象は下記のとおりです。

バージョン自動更新の対象
3.7~5.6コアのマイナーリリース、翻訳ファイル
5.5~コアのマイナーリリース、翻訳ファイル 、プラグイン、テーマ
5.6~コアのマイナーリリース、コアのメジャーリリース、 翻訳ファイル 、プラグイン、テーマ

2021年9月現在時点でリリースされている最新のメジャーバージョンは5.8ですが、このバージョンでは初期値で、マイナーバージョンのアップデート、メジャーバージョンのアップデート、プラグインやテーマの更新、翻訳ファイルの更新が有効になっています。

スポンサーリンク

自動更新のメリットとデメリット

機能の追加や修正、脆弱性の発見によってソースコードをが更新された時に、自動で更新してくれるのはとても便利なのですが、それによる弊害もあります。それは、自動更新されたことによってサイトコンテンツのソースコードやほかのソースコードとの相性が悪くなって、一部もしくはサイト全体が機能しなくなってしまう(表示できなくなる)リスクがあるということです。

Webサイトの運営に限りませんが、導入されているソフトウェアの自動更新をオンにしていてシステムがダウンしたという話はたまに聞きます。。。。

一般的には、マイナーリリースに含まれるのは機能の不具合修正やセキュリティアップデートですが、メジャーリリースの更新の目玉は機能の追加や削除ですので、既存サイトとの相性が悪くなる可能性は非常に高いです。

ですので、自動更新については状況に応じた方法でオフにしておくことをお勧めします。ここではその方法を書いていきたいと思います。

WordPressのバージョンに関する補足

WordPressのバージョンは「5.8.1」といった具合に3つの桁で表します。一般的には3桁のバージョンがある場合、「メジャー.マイナー . パッチ」のような表現となりますが、Wordpressは歴史的に3桁目がマイナーバージョンで、1,2桁目がメジャーバージョンとなるようです。

メジャーバージョンは2桁目が10進数で繰り上がる形となるようで、例えば4.9のバージョンの次のメジャーアップデートは桁が繰り上がって5.0という具合になります。3桁目に関しては繰り上がらず、例えば「*.*.10」の次のマイナーアップデートはや「*.*.11」となるそうです。

補足でした。

管理画面からメジャーバージョンアップの自動更新のみを制御する方法

[ダッシュボード] – [更新] 画面から、メジャーバージョンアップの自動更新のみを制御することが出来ます。

初期値では、「このサイトは WordPress の新しいバージョンごとに自動的に最新の状態に保たれます。」と表示されています。

メジャーバージョンアップ の自動更新を無効化したい場合は、「メンテナンスリリースとセキュリティリリースのみの自動更新に切り替えます。」リンクをクリックします。

管理画面からメジャーバージョンアップの自動更新のみ無効にする

表示が「このサイトは WordPress のメンテナンスリリースとセキュリティリリースのみで自動的に最新の状態に保たれます。」に変わったと思います。

自動更新を有効に戻したい時は、「WordPress のすべての新しいバージョンに対する自動更新を有効にします。」をクリックすると自動更新が有効に戻ります。

管理画面からメジャーバージョンアップの自動更新のみ有効に戻す

wp-config.phpで自動更新を制御にする方法

wp-config.phpでは、コアファイルの自動更新を制御することが出来ます。プラグインやテーマの自動更新制御についてはマニュアルに記載がなかったので、出来ないと思われます。後述のfunction.phpで行うことが出来ますのでそちらを参照してください。

すべての自動更新を完全に無効にする

あらゆる全ての更新を一括してまとめて無効するには下記のように追記します。ただ、セキュリティアップデートや機能の不具合修正、翻訳ファイルのアップデートまで無効となってしまう為、これらの自動更新をオフにしたくない方にはお勧めできません。

設定するには下記のように追記します。

define( 'AUTOMATIC_UPDATER_DISABLED', true );

設定後、[ダッシュボード] – [更新] 画面を確認すると、「このサイトは WordPress の新しいバージョンごとに自動的に最新の状態に保たれます。」の表示から「このサイトは新しいバージョンの WordPress の自動更新を受け取りません。」の表示に代わります。

自動更新初期状態のダッシュボード表示
全ての自動更新を無効にしたときのダッシュボード表示

コアファイルの自動更新を制御する

コアファイルの自動更新を制御する方法は下記の3つです。

設定値動作内容
true開発、マイナー、およびメジャーアップデートをすべて有効にする
false開発、マイナー、およびメジャーアップデートをすべて無効にする
minorマイナーアップデートを有効、開発やメジャーアップデートを無効にする

設定するには下記のように追記します。

define( 'WP_AUTO_UPDATE_CORE', true );
define( 'WP_AUTO_UPDATE_CORE', false );
define( 'WP_AUTO_UPDATE_CORE', 'minor' );

設定後、[ダッシュボード] – [更新] 画面を確認すると、「false」に設定した場合はすべての更新を完全に無効した時と同じように、「このサイトは新しいバージョンの WordPress の自動更新を受け取りません。」の表示に代わります。

「minor」にしたときは、「このサイトは WordPress のメンテナンスリリースとセキュリティリリースのみで自動的に最新の状態に保たれます。」 の表示に代わります。

コアの自動更新をminorにしたときのダッシュボード表示

function.phpで自動更新を制御する方法

もう一つの方法としてfunction.phpにフィルタを設定する方法があります。この方法ですと、テーマやプラグインも自動更新を制御することが可能です。

すべての自動更新を完全に無効にする

フィルターをfunction.phpに追記することで、全ての更新を一括してまとめて無効にできます。wp-config.phpの設定と同じで、セキュリティアップデートや機能の不具合修正、翻訳ファイルのアップデートまで自動更新をオフにしたくない方にはお勧めできません。 個別に設定したい方は、後述していますのでそちらを参照してください。

add_filter( 'automatic_updater_disabled', '__return_true' );

設定後 [ダッシュボード] – [更新] 画面を確認すると、「このサイトは新しいバージョンの WordPress の自動更新を受け取りません。」と表示されます。

コアファイルの自動更新を全て無効にする方法

コアファイルの自動更新をすべてまとめて無効にするには下記のように追記します。

add_filter( 'auto_update_core', '__return_false' );

「false」設定後は、 [ダッシュボード] – [更新] 画面を確認すると、「このサイトは新しいバージョンの WordPress の自動更新を受け取りません。」と表示されます。

コアファイルの自動更新を個別に無効にする方法

開発、メジャー、マイナーバージョンのコアを個別に無効にすることが出来ます。下記のように設定します。

//無効化
add_filter( 'allow_dev_auto_core_updates', '__return_false' );
add_filter( 'allow_minor_auto_core_updates', '__return_false' );
add_filter( 'allow_major_auto_core_updates', '__return_false' ); 

設定後は、「minor」だけ有効化した場合は [ダッシュボード] – [更新] 画面 に「このサイトは WordPress のメンテナンスリリースとセキュリティリリースのみで自動的に最新の状態に保たれます。」と表示されます。

「major」だけか「major」「minor」両方有効化した場合は「このサイトは WordPress の新しいバージョンごとに自動的に最新の状態に保たれます」と表示されます。

「dev」は必要が無かったので試していません。

全体的に自動更新を無効にしつつ個別にコアファイルの自動更新を有効にする方法

全体的に無効化しつつ個別に有効化する合わせ技が使えます。下記のように設定します。

//全体的に無効化する
add_filter( 'auto_update_core', '__return_false' );

//必要に応じて個別に有効化する
add_filter( 'allow_dev_auto_core_updates', '__return_true' );
add_filter( 'allow_minor_auto_core_updates', '__return_true' );
add_filter( 'allow_major_auto_core_updates', '__return_true' ); 

設定後は、 [ダッシュボード] – [更新] 画面のメッセージが前章の「コアファイルの自動更新を個別に無効にする方法」と同じ表示になると思います。

テーマの自動更新をまとめて制御する方法

初期値では、テーマの自動更新は個別に有効化/無効化するようになっており、テーマの詳細を開くと「自動更新を有効化」「自動更新を無効化」のリンクが表示され、これを変更することで自動更新の有効無効を変更できます。

尚、全ての自動更新を無効にする「add_filter( ‘automatic_updater_disabled’, ‘__return_true’ );」が設定されている場合は、この設定は個別に効きませんでした。

テーマの自動更新が個別で無効な状態

下記のように設定すると、まとめてすべてのテーマの自動更新を有効化 / 無効化することが出来ます。

//有効化
add_filter( 'auto_update_theme', '__return_true' );

//無効化
add_filter( 'auto_update_theme', '__return_false' );

設定後、[外観] – [テーマ] – [テーマの詳細] を開くと、有効化した場合は「自動更新有効」、無効化した場合は「自動更新無効」のリンクではない黒いただの文字列(設定変更が出来ない状態)が表示されます。

テーマの自動更新が全て有効な状態
テーマの自動更新が全て無効な状態

プラグインの自動更新をまとめて制御する方法

プラグインの自動更新もテーマと同じで、初期値では個別に有効無効を設定出来るようになっています。下記の設定を追記することで、まとめて更新を制御することが出来ます。

テーマと同じで、全ての自動更新を無効にする「add_filter( ‘automatic_updater_disabled’, ‘__return_true’ );」が設定されている場合は、この設定は効きません。

//有効化
add_filter( 'auto_update_plugin', '__return_true' );

//無効化
add_filter( 'auto_update_plugin', '__return_false' );

有効化した場合は、「プラグイン」のページですべてのプラグインの自動更新が「自動更新有効」、無効化した場合は 「自動更新無効」 というリンクではない黒い文字(設定変更が出来ない状態)が表示されます。

プラグインの自動更新が全部有効な状態
プラグインの自動更新が全部無効な状態

プラグインの自動更新を個別に制御する方法

プラグインの自動更新は個別に制御することが可能です。 制御するには下記のように設定します。

プラグイン名は、wp-content\plugins配下にある各プラグインフォルダのなかの「プラグイン名.php」ファイルの「Text domain」を指定すれば動きました。(管理画面に表示されるプラグイン名では動きません)

この設定も、全て無効に設定する「add_filter( ‘automatic_updater_disabled’, ‘__return_true’ );」が設定されている場合は個別に効きませんでした。

function auto_update_specific_plugins ( $update, $item ) {
    $plugins = array (
    //ここにプラグインのText domainを書く
        'akismet',
        'buddypress',
    );
    if ( in_array( $item->slug, $plugins ) ) {
         // 配列にプラグインの指定があればtrueを返して自動更新を有効にする。
        return true;
    } else {
        // そうでなければnullを返す。
        return $update;
    }
}
add_filter( 'auto_update_plugin', 'auto_update_specific_plugins', 10, 2 );

設定が反映されたかは[プラグイン]のページで確認できます。$plugins配列に記入したプラグインは黒い文字で「自動更新有効」、その他は「自動更新を有効化」のリンク(個別に有効化できる状態)が表示されます。

プラグインの自動更新を個別に有効化した時の確認

尚、「自動更新を有効化」のリンク(個別に有効化設定が出来てしまう状態)ではなく設定変更が出来ない「自動更新無効」の表示状態にしたい場合は、「return $update;」を「return $false;」に変更するか、「add_filter( ‘auto_update_plugin’, ‘__return_false’ );」を追記すればできました。

プラグインの自動更新を個別に有効無効強制化

翻訳ファイルの更新制御

自動翻訳ファイルの更新を無効化するには下記のように設定します。初期値では有効になっています。

add_filter( 'auto_update_translation', '__return_false' );

更新通知メールの制御

コアファイルの自動更新状態はメールで通知されてきますが、下記で無効化できます。

add_filter( 'auto_core_update_send_email', '__return_false' );

下記フィルターを使うことで通知メールをカスタマイズすることが可能なようです。これについては使ったことが無いので詳細についてはググってみてください。

/* @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 );

自動更新用のプラグインを使う方法

自動更新用のプラグインをいくつか紹介します。

スポンサーリンク

Advanced Automatic Updates(バージョン1.0.2)

インストールすると[設定] – [Advanced Automatic Updates]のメニューが追加されます。設定項目は必要最低限になっています。自動更新で制御できる項目は下記の画像のとおりです。

Advanced Automatic Updatesの設定画面

Easy Updates Manager(バージョン 9.0.9)

インストールすると[ダッシュボード] – [更新設定]のメニューが追加されます。設定項目は、プレミアムを購入するとかなり多機能となります。 自動更新で制御できる項目は下記の画像のとおりです。

Easy Updates Managerの設定画面1
Easy Updates Managerの設定画面2
Easy Updates Managerの設定画面3
Easy Updates Managerの設定画面4
Easy Updates Managerの設定画面5
Easy Updates Managerの設定画面6
Easy Updates Managerの設定画面7
Easy Updates Managerの設定画面8

スポンサーリンク

WP Auto Updater(バージョン1.6.0)

インストールすると[ダッシュボード] – [更新設定] のメニューと [ダッシュボード] – [アップデート履歴] が追加されます。自動更新で制御できる項目は下記の画像のとおりです。

WP Auto Updater設定画面1
WP Auto Updater設定画面2
WP Auto Updater設定画面3
WP Auto Updater設定画面4

更新する前には必ず事前検証をする

更新する前には、ローカル環境に同じ環境を構築して事前検証することが大事です。検証せずに更新すると、既存コンテンツやプラグインのコードとの相性で、サイトが立ち上がらなくなるリスクがあります。

更新する前には必ずバックアップを取得しておく

事前検証もしっかりしたのに、いざ更新作業をしたら何故かサイトが動かなくなってしまったというケースが少なからずあると思います。対策としては定期的にフルバックアップを取得しておくのがおすすめです。有事の際にはロールバックできるように必ず準備したほうがよさそうです。

戻せなくなったと考えるだけでちびりそうですね。。。