WordPressの自動アップグレードを表示させない方法


WordPressは、バージョン2.7から、自動アップグレードが可能になりました。

他のCMSでは、バージョンアップは、コアファイルをFTPで上げ直したり、データベースの書き換えが必要だったり、ボタン一つクリックすれば出来る、というモノは少なく、このWordPress本体がバージョンアップできる機能は、とても便利です。

WordPressのコアファイルがアップグレードすると、以下のような画面が、管理画面の上部に表示されると思います。

WordPress 3.1.2 が利用可能です ! アップデートしてください。

すなわち、「WordPress 3.1.2 が利用可能です ! アップデートしてください。」といった文章です。

このリンクをクリックすると、

WordPressのアップグレード

という形で、自動アップグレードが可能となります。

WordPressの場合は、自動アップグレードに失敗した、という話はあまり聞きません。ですので、多くの人は、この方法でアップグレードしていると思います。

(たまに聞くのは、アップグレード中に他をクリックしたりインターネット回線が切れて、アップグレードはされたことになっているけど、一部分アップグレードされなかった場合です。この場合は、FTPでコアファイルを入れ直す、それが面倒なら次のアップグレードを待つ、などの対応があると思います。)

ということで、この自動アップグレード機能は、他のCMSにはあまり見られない素晴らしい機能だと思います。

ただ、何らかの理由で、自動アップグレードをしたくない場合もあると思います。

例えば、以下のような場合です。
(1)複数人で管理をしていて、編集者権限や投稿者権限を持っている人がいて、アップグレードの表示が出ると不審がってしまう。(自動アップグレードできるのは、管理者権限を持っているユーザーのみですので、編集者権限や投稿者権限のユーザーは管理者権限ユーザーにアップグレードが出ている旨を伝えるしかありません。)
(2)WordPressのコアファイルをカスタマイズしてしまって、バージョンアップすると上書きされてしまい、実装した機能が消えてしまうので、事実上もうアップグレードできない。
(3)お客さんに納品したサイトで、その後のメンテナンスまで請け負っていない。
等々です。

実は、弊社でも、とある事情でWordPressの3系に上げずに2系のままにするという仕様の案件を、先日1件、請けました。

そこで、その際に行ったことを、以下に記載します。

といっても、大げさなことではなく、WordPressテーマのfunctions.phpに、以下のコードを書くだけです。

WordPresのバージョンが2.3系~2.7系の場合

add_action( 'init', create_function( '$a', "remove_action( 'init', 'wp_version_check' );" ), 2 );
add_filter( 'pre_option_update_core', create_function( '$a', "return null;" ) );

 

WordPresのバージョンが2.8系~2.9系の場合

remove_action( 'wp_version_check', 'wp_version_check' );
remove_action( 'admin_init', '_maybe_update_core' );
add_filter( 'pre_transient_update_core', create_function( '$a', "return null;" ) );

 

WordPresのバージョンが3系以降の場合

add_filter( 'pre_site_transient_update_core', create_function( '$a', "return null;" ) );

 

以上です。

このように、WordPressのバージョンによって、フィルターフックのAPIが異なってくるので、書き方が異なります。

私がWordPressを2系のまま使わなければならなかった事情の案件では、WordPresのバージョンが2.8系~2.9系の場合部分のコードを、WordPressテーマのfunctions.phpに記載したわけです。

多くの人は、WordPressのバージョンは3系を使っていると思いますので、WordPresのバージョンが3系以降の場合で対応できると思います。

また、知り合いの大曲さんのブログでは、WordPresのバージョンが3系以降の場合のコードの書き方として、

add_filter( 'pre_site_transient_update_core', '__return_zero' );

と、WordPressテーマのfunctions.phpに書くと紹介されていました。

たった1行でWordPressのバージョンアップ通知を非表示にする方法 | Simple Colors

要は、pre_site_transient_update_coreというフィルターフックを無効にすると良い、と、私は解釈しました。

なお、この記事を書くに当たっては、
WordPress Plugin: Disable WordPress Core Update · Ludicrous
という英語の記事を参考にしました。感謝いたします。

また、念のためですが、WordPressのアップグレードは、新機能の追加はもちろん、バクの修正やセキュリティの修正などのために、アップグレードされることもあります。したがって、最新版にしておくのがベストな選択肢であることは、予め注意点としてお伝え致します。

さらに、応用編として、
管理者権限のあるユーザーには、アップグレード通知は表示されるけど、編集者権限や投稿者権限や閲覧者権限の人にはアップグレード通知が表示されない、ということも可能です。
また、どの権限の人にアップグレード権限を見せるようにするかを設定することも可能です。
この方法によれば、上記で挙げた「自動アップグレードをしたくない場合」の(1)に該当する場合には、少なくとも解決できるでしょう。

記事が長くなってきましたので、この方法については、また別の記事で記載します。

カテゴリー: WordPressのカスタマイズ   パーマリンク

WordPressの自動アップグレードを表示させない方法 への2件のコメント

  1. ピンバック: WordPressで本体や特定のプラグインのアップデート通知を非表示にする方法をまとめてみた « INSPIRE TECH

  2. ピンバック: [ wordpress ] 管理画面をカスタマイズするのに使えそうなネタ | 23.4度傾いて眺める街並み

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA