WordPressのアップデートをOFFにする方法

2017年2月11日

WordPressで稀にあるのが、納品後にクライアントがWordPress本体やプラグインをアップデートして、正常に動作しなくなるというトラブルです。

今回は、WordPressのアップデート機能をOFFにすることで、納品後にクライアントがアップデートしてしまうことによるトラブルを防ぐ方法をご紹介します。

WordPress、プラグインのアップデートについて

WordPress本体やプラグインが機能追加・修正、セキュリティやパフォーマンスの改善を行なった場合、自動的に通知を受け取り、管理画面に表示させる機能がついています。

基本的には、アップデートを適用して動かなくなるということはあまりないのですが、プラグインやカスタマイズ部分が多い場合は競合して動かなくなるリスクがあります。アップデートする場合の注意事項は別途記事を作成しますね。

本来、WordPress本体やプラグインはアップデート後も動くように考えて作られています。

カスタマイズする場合もアップデートの影響を受ける部分は避けてカスタマイズするのですが、クライアントからの強い要望を実現するためや仕様上回避できない場合など、事前にリスクを説明して手を入れる場合があります。

WordPressの更新通知を無効化する方法

プラグインを利用して更新を無効化する方法

インストールするだけのお手軽対応です。アップデートが必要になった場合でも、管理画面でプラグインを無効にするだけですぐに更新の通知機能が復活するので非常に便利です。ただし、一括で更新通知をOFFにしてしまうため、特定のプラグインだけ更新通知をOFFにしたい場合やマイナーアップデートは適用したいという場合には、後述のfunctions.phpで対応する方法にする必要があります。

Disable All WordPress Updates

https://ja.wordpress.org/plugins/disable-wordpress-updates/

管理画面からプラグインを検索し、インストール後、有効化するだけです。逆に、更新する必要が出てきた時は、プラグインを無効化するだけで元に戻せるので非常にお手軽です。

ただし、セキュリティアップデートや翻訳データなどの自動更新も全て無効化されてしまうのでご注意ください。

functions.phpを利用して更新を無効化する方法

更新通知をOFFにする対象は個別にそれぞれ設定可能ですので、内容をよく確認してfunctions.phpに反映してください。

WordPress本体の更新通知をOFFにする

add_filter('pre_site_transient_update_core', '__return_zero');
remove_action('wp_version_check', 'wp_version_check');
remove_action('admin_init', '_maybe_update_core');

全てのpluginの更新通知をOFFにする

remove_action( 'load-update-core.php', 'wp_update_plugins' );
add_filter( 'pre_site_transient_update_plugins', create_function( '$a', "return null;" ) );

特定のpluginの更新通知をOFFにする

対象のプラグインのフォルダ名と本体のファイル名を確認して、下記の「フォルダ名/ファイル名.php」の部分を書き換えます。複数のプラグインの通知を切りたい場合は、else if 文を使って増やしていけます。

function filter_hide_update_notice($data) {
if (isset($data->response['フォルダ名/ファイル名.php'])) {
unset($data->response['フォルダ名/ファイル名.php']);
}
return $data;
}
add_filter('site_option__site_transient_update_plugins', 'filter_hide_update_notice');

テーマの更新通知をOFFにする

remove_action( 'load-update-core.php', 'wp_update_themes' );
add_filter( 'pre_site_transient_update_themes', create_function( '$a', "return null;" ) );

全ての自動更新をOFFにする

コアファイルを含むすべての自動更新を完全に無効化する方法になります。詳細は公式ドキュメントをご参照ください。

add_filter( 'automatic_updater_disabled', '__return_true' );

オススメの方法

基本的には更新すべきですが、どうしても必要であれば、プラグインまたはfunctions.phpで個別に設定しましょう。

更新通知のON/OFFを頻繁に切り替える可能性がある場合は、プラグインがオススメです。

それ以外は、functions.phpに全て書いてしまい、随時更新したいものに関してはコメントアウトしておくのがオススメです。

開発当初はコアファイルの更新だけ無効にしていたけど、途中から「プラグインも無効にしたい!」となった場合に、コメントを解除するだけなので、調べ直す必要がないのがメリットです。

まとめ

セキュリティの問題もありますので、基本的に最新バージョンにアップデートしておきましょう。

サイトの仕様上、どうしても必要な時にのみ使うようにした方が良いですね。

個人的には、functions.phpを利用する方法がオススメです。プラグイン単位でのON/OFFが制御できることや必要なものだけ更新をOFFにしていくことが簡単に出来流ので、必要以上にセキュリティを落とさずにすみます。