WordPressは、バージョン2.7から、自動アップグレードが可能になりました。
他のCMSでは、バージョンアップは、コアファイルをFTPで上げ直したり、データベースの書き換えが必要だったり、ボタン一つクリックすれば出来る、というモノは少なく、このWordPress本体がバージョンアップできる機能は、とても便利です。
WordPressのコアファイルがアップグレードすると、以下のような画面が、管理画面の上部に表示されると思います。
すなわち、「WordPress 3.1.2 が利用可能です ! アップデートしてください。」といった文章です。
このリンクをクリックすると、
という形で、自動アップグレードが可能となります。
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で本体や特定のプラグインのアップデート通知を非表示にする方法をまとめてみた « INSPIRE TECH
ピンバック: [ wordpress ] 管理画面をカスタマイズするのに使えそうなネタ | 23.4度傾いて眺める街並み