WordPressでプラグインの更新を停止する。特定プラグインを更新させなくしたい!

Wordpress-プラグインを更新させなくする方法_eyecatch

WordPressで全てのプラグイン、および特定のプラグインの更新を停止する方法をまとめました。

正確にはプラグインの更新通知を停止する方法ですが、これでプラグインを更新させなくすることができます。

基本的にはWordPress本体も各プラグインも最新バージョンを使用した方が良いのですが、何らかの理由でプラグインのアップデートを止めたい時にどうぞ。

functions.phpを使う方法とプラグインを使う方法を両方ご紹介します。

WordPressプラグインの更新を停止する方法

まずはじめに...この記事ではWordPressのプラグインの更新を停止する方法として、以下の内容を記載しています。

  1. functions.phpで特定のプラグインの更新を停止する方法。
  2. プラグインで特定のプラグインの更新を停止する方法。
  3. functions.phpで全てのプラグインの更新を停止する方法。

どの方法も目的は同じなので、必要な箇所をお読みいただければと思います。
functions.phpを使う方法がお勧めですが、初心者の方向けにプラグインを使う方法も書きました。

プラグインの更新を停止したい理由

今回はプラグインのコアファイルにも手を入れているEasy Table of Contentsの更新を停止したかったのでこの方法を使いました。

Wordpress-特定のプラグインを更新させない_001

プラグイン「Easy Table of Contents」の更新を停止したい

というのも、自分で改造したプラグインのコアファイルがプラグインのアップデートの度に編集した箇所が上書きされて消えてしまい、元に戻すのが面倒なのです…

Easy Table of Contentsの機能には既に満足しているのでこの時点のバージョンを使い続けたいわけです。触り過ぎており、アップデートした瞬間まず不具合が出ます。

プラグインのアップデートを停止したい理由はこんなところです。
では早速プラグインの更新を停止する方法について見ていきましょう・w・

スポンサーリンク

特定のプラグインを更新させなくする方法[functions.php編]

まずはWordPressのfunctions.phpにコードを追記することで、指定したプラグインの更新を停止(更新通知停止)する方法です。

ベースとなるコードが以下です。
専用のフックが用意されているので簡単に停止することができます。

//指定したプラグインの更新を停止する
add_filter('site_option__site_transient_update_plugins', 'disable_plugin_update');
function disable_plugin_update($data) {
    $plugin_path = 'プラグインフォルダ/プラグイン名.php';
    if (isset($data->response[$plugin_path])) {
        unset($data->response[$plugin_path]);
    }
    return $data;
}

重要なのは$plugin_pathの部分です。
ここに自分が更新を停止したいプラグインの場所を指定して使います。
具体的には「plugins」フォルダ以下の「プラグインフォルダ/プラグイン名.php」を指定する感じとなります。

これ、少しややこしいので詳しく解説します。
「Easy Table of Contents」プラグインの場合、指定するプラグインファイルは以下の場所になります。WordPressなら基本こんな構造だと思います。

サーバールート>public_html>wp-content>plugins>easy-table-of-contents>easy-table-of-contents.php

なので実際に使うコードの$plugin_pathの部分は、

$plugin_path = 'easy-table-of-contents/easy-table-of-contents.php';

という形になります。
このように基本的には「プラグインフォルダ/プラグイン名.php」という感じなのですが、一部のプラグインでは例外があります。

Wordpress-特定のプラグインを更新させない_002

Contact Form 7はファイル名に「wp-」が付いていた

例えば「Contact Form 7」プラグインの場合、ファイル名には「wp-」が付いているので指定するファイル名は「wp-contact-form-7.php」となります。

特定のプラグインの更新が停止される

functions.phpにコードを追記したら早速動作確認します。

Wordpress-特定のプラグインを更新させない_003

Easy Table of Contentsの更新通知が消えた

コードによってプラグインの更新通知が停止しました。
横の「自動更新を有効化」という項目も無くなっていることが分かります。

ちなみにこのコードはプラグインを無効化している状態でも機能しました。

プラグインでプラグインの更新を停止する方法

funcitons.phpの編集ができない方は、プラグインを使っても同じことができます。

少し調べたところ「Block Plugin Update」というプラグインが見つかりましたので、こちらを紹介します。

外部リンク

【プラグインの公式ページ】
Block Plugin Update – WordPress plugin | WordPress.org

執筆時「Block Plugin Update」は管理画面からインストールできました。

Wordpress-特定のプラグインを更新させない_004

管理画面左メニュー>プラグイン>新規追加

管理画面左メニュー > プラグイン > 新規追加

に進んだら検索欄に「Block Plugin Update」と入力。
出てきたら今すぐインストール&有効化しましょう。

Block Plugin Updateの使い方

Block Plugin Updateの使い方は凄くシンプルです。

Wordpress-特定のプラグインを更新させない_005

プラグインを有効化したら、プラグイン一覧からBlock Plugin Updateの「Settings」に進みます。(設定>Block Plugin UpdateでもOK)

Wordpress-特定のプラグインを更新させない_006

更新停止したいプラグインにチェックを入れて保存する

インストールされているプラグインが一覧で出るので、更新を停止したいプラグインの横のチェックボックスにチェックを入れて「変更を保存」すれば、そのプラグインの更新を停止させることができます。

ポイント

設定が反映されない時はログインし直してみて下さい。

これでfunctions.phpを使った時と同じく、特定のプラグインを更新させなくすることができます。

全てのプラグインの更新を停止する方法

最後にインストールしている全てのプラグインの更新を停止する方法です。
これはほとんど使う方がいないと思いますので、おまけです。

functions.phpを使うなら以下のコードで全てのプラグインの更新通知を停止することができます。

//全てのプラグインの更新通知を停止
remove_action('load-update-core.php', 'wp_update_plugins');
add_filter('pre_site_transient_update_plugins', create_function('$a', "return null;"));

プラグインの場合は全てにチェックを付ければOKですね。

Wordpress-プラグインの更新停止_007

全てのプラグインから自動更新の項目が消えた

これで全プラグインを更新させなくすることができます。

記事の冒頭にも書いた通り、何も理由がないならWordPress本体やプラグインは最新バージョンのものを使いましょう。特にセキュリティーの観点から古いバージョンを使い続けるのは良くないとされています。



まとめ

以上、WordPressで特定のプラグインの更新を停止する方法でした。

お仕事でWordPressを使う方は、機能実装のためにプラグインを改造・拡張してからクライアントに納品することもあるかと思いますが、そんな時に自動アップデートで不具合が出るのを未然に防ぐこともできそうですね。

今までWordPressのサイトヘルスで「更新可能なプラグインがあります」と怒られており、その度に「えぇ、そのプラグインはわざと放置しています。」と反論していたのですが、この喧嘩ともおさらばできそうです・w・

-WordPress
-

site-logo
ありがとうございました!
良かったらシェアしてネ・w・
当サイトはピンバックを受け付けます。

© 2020 sologaku