ブログ
11.172016
特定のプラグインの更新だけを止める方法
WordPressでは、動作を自由にカスタマイズするためにプラグインで機能を拡張することができます。
プラグインを自作する場合は特に問題なく自由な運用が可能ですが、公開されているプラグインを改造した際や案件で納品する際にプラグインの更新通知が来てしまうと困る場合があります。
権限を与えないという方法が考えられますが、作りきりで納品を行う場合などでは管理者権限を含め一切を渡すことになるため、後々アップデートが原因でトラブルになる可能性があります。
管理者権限を渡すことで、アップデート通知が来たために更新してしまい予期しない不具合が発生してしまうといった具合です。
そこで、プラグインの更新自体を停止させたり、または特定のプラグインのみ更新通知を抑止する方法を紹介します。
プラグインの更新通知を抑止する(通知が来ないようにする)
まずは、プラグインがアップデートされた場合の更新通知自体が行われないようにする方法です。
この方法では、すべてのプラグインの更新通知が行われなくなります。
以下のコードを使用中のテーマの functions.php に記入しアップロードすることで有効化されます。
有効化
add_filter( 'auto_update_plugin', '__return_true' );
無効化
add_filter( 'auto_update_plugin', '__return_false' );
その他に、WordPress本体のアップデート通知の停止などはこちらをご覧ください。
> WordPressの自動更新(アップデート)を停止する
特定のプラグインのみ「更新通知」が届かないようにする
この方法は、WordPressのプラグイン公式ディレクトリに公開されているプラグインに対して有効です。(厳密には他のプラグインでも有効ですが、更新通知が来るはずがないので…)
以下のようなコードをテーマの functions.php に追加することで特定のプラグインの更新通知を抑止することができるようになります。
add_filter('site_option__site_transient_update_plugins', '動作を変更するための独自関数名'); function 動作を変更するための独自関数名($data) { $plugin_name = 'プラグインファイルの場所'; if (isset($data->response[$plugin_name])) { unset($data->response[$plugin_name]); } return $data; }
簡単に解説すると、内部の filter フック「site_option__site_transient_update_plugins」に役割を追加する形で手を加えて、通知抑止を行いたいプラグインの通知を強制的に止めてしまうという手法になっています。この関数内で、内部で処理されているアップデート対象のプラグインの情報から、該当するプラグインの情報を削除し、内部のプログラム上動かないようにしています。
また、プラグインファイルの場所は、plugins フォルダ(ディレクトリ)以下の実際のプラグインを入れているフォルダ(ディレクトリ)とメインのプログラム(プラグインについてのコメントによる記述があるファイル)のファイル名までのパスを指定します。例えば、フォルダ直下にプラグインのメインのプログラム「myplugin.php」があれば「myplugin.php」となり、フォルダ「my-plugin」の下に「myplugin.php」があれば「my-pulugin/myplugin.php」となります。
具体的な使用例として、以下の条件のときのサンプルコードを示します。
- 動作を変更するための独自関数名:MyPlugin_hide_update_notice
- プラグインファイルの場所:my-plugin/myplugin.php
add_filter('site_option__site_transient_update_plugins', 'MyPlugin_hide_update_notice'); function MyPlugin_hide_update_notice($data) { $plugin_name = 'my-plugin/myplugin.php'; if (isset($data->response[$plugin_name])) { unset($data->response[$plugin_name]); } return $data; }
更新通知の抑止方法にもいくつかあるため、適材適所で動作の調整にご活用ください。
Copyright © PLUGMIZE(プラグマイズ)