WordPressで稀にあるのが、納品後にクライアントがWordPress本体やプラグインをアップデートして、正常に動作しなくなるというトラブルです。
今回は、WordPressのアップデート機能をOFFにすることで、納品後にクライアントがアップデートしてしまうことによるトラブルを防ぐ方法をご紹介します。
ただ、基本的にこの設定をするのはオススメしません。WordPressやプラグインは常に最新を使うようにしましょう。
Contents
WordPress、プラグインのアップデートについて
WordPress本体やプラグインが機能追加・修正、セキュリティやパフォーマンスの改善を行なった場合、自動的に通知を受け取り、管理画面に表示させる機能がついています。
基本的には、アップデートを適用して動かなくなるということはあまりないのですが、プラグインやカスタマイズ部分が多い場合は競合して動かなくなるリスクがあります。
本来、WordPress本体やプラグインはアップデート後も動くように考えて作られています。
例えば、カスタマイズする場所とアップデートがかかる場所を明確に分けていたり、かなり古いPHPのバージョンをサポートしていたりとか。
そのため、ほとんどの場合はテスト環境などで軽く確認する程度でアップデートしてしまうことが多いです。
WordPressの更新通知を無効化する方法
どうしてもWordPressをアップデートしたくない場合、WordPressやプラグインのアップデート版がリリースされていることの通知を受け取る機能を無効化してしまいます。
その場合、プラグインまたはfunctions.phpで設定可能です。
更新通知のON/OFFを頻繁に切り替える可能性がある場合は、プラグインがオススメです。
それ以外なら、functions.phpに全て書いてしまい、更新したいものに関してはコメントアウトしておくのがオススメです。
プラグインを利用して更新を無効化する方法
インストールするだけのお手軽対応です。
アップデートが必要になった場合でも、管理画面でプラグインを無効にするだけですぐに更新の通知機能が復活するので非常に便利です。ただし、一括で更新通知をOFFにしてしまうため、特定のプラグインだけ更新通知をOFFにしたい場合やマイナーアップデートは適用したいといった細かい調整が必要な場合には、後述のfunctions.phpで対応する方法にする必要があります。
Disable All 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を使って更新通知を無視するように設定してしまいます。
個人的には、functions.phpを利用する方法がオススメです。
プラグイン単位でのON/OFFが制御できることや必要なものだけ更新をOFFにしていくことが簡単に出来るので、必要以上にセキュリティを落とさずにすみます。