【WordPress】プラグインが有効かどうかをPHPから調べる方法【PHP】

  • 投稿 : 2016-11-10
  • 更新 : 2018-09-30

方法、2つ

・プラグインで使用している関数の存在チェックで調べる方法
・is_plugin_activeを使う方法

通常はis_plugin_active()で確認すればよいと思いますが、function_exists()を使う方法もありますよということで・・。

プラグインで使用している関数の存在チェックで調べる方法

if(!function_exists("get_field")){
    echo '<div class="message error"><p>Advanced Custom Fieldsプラグインを有効にしてください</p></div>';
}

Advanced Custom Fieldsプラグインとかの場合なら、get_fieldという関数をプラグイン内で定義してるので、それが存在するかどうかでチェックすることが可能です。get_field()のように、PHPから外部から使うこと前提になっている関数があるのなら、それでチェックするのが簡単だと思います。

is_plugin_activeを使う方法

注意: この関数は wp-admin/includes/plugin.php で定義されているので、管理画面でのみ利用可能です。テンプレートでこの関数を使用したい場合は、手作業で plugin.php を require する必要があります。
関数リファレンス/is plugin active - WordPress Codex 日本語版

今までこんな便利な関数がWordpressで用意されてるのを知らずに、そのプラグイン特有のインスタンスとか変数が存在するとかでやってたのですが、is_plugin_activeを使うほうが簡単で安全ですよね。

if(!function_exists('is_plugin_active')){
    require_once(ABSPATH . 'wp-admin/includes/plugin.php');
}

まず、この関数は管理画面でしか使えないので、「is_plugin_active」という関数の存在チェックをして、なければwp-admin/includes/plugin.phpをインクルードするコードを書きます。こうすれば、どこでも利用できるようになります。私はプラグイン中で利用しました。

※ABSPATHはWordpressで定義されている、インストールパス(物理パス)です。

if(is_plugin_active('akismet/akismet.php')){
	//akismetが有効な時
}

Akismet — WordPress Plugins

たとえば、akismetプラグインが有効になってるかどうかの判断は上記のようにします。

参考:
PHP: function_exists - Manual

スポンサーリンク