MENU

is_plugin_active()

is_plugin_active() は、WordPress のプラグインが現在有効になっているかを判定する関数です。

特定のプラグインが有効な場合のみ処理を実行したいときに使用します。

例えば、Advanced Custom FieldsWooCommerce などのプラグインが有効かどうかをチェックし、プラグインの機能に依存したカスタマイズを適用できます。管理画面のスクリプト制御や、テーマで特定のプラグイン専用の機能を作成する際に便利です。

目次

is_plugin_active() とは?

is_plugin_active() は、WordPress の管理画面で特定のプラグインが有効かどうかを判定する関数です。
この関数を使用すると、プラグインが有効な場合にのみスクリプトやスタイルを追加したり、特定の処理を実行することができます。

主な使用シーン

  • 特定のプラグインが有効時のみ追加機能を適用したいとき
  • 管理画面で不要なスクリプトを読み込まないようにしたいと
  • テーマやカスタムプラグインが、別のプラグインと連携する必要があるとき

機能の説明

is_plugin_active() は、WordPressの管理画面で有効化されたプラグインをプログラムで確認するための便利なテンプレートタグです。指定したプラグインがアクティブであれば true を返し、無効または存在しない場合は false を返します。

この関数は主にテーマや他のプラグイン内で、依存するプラグインが有効かどうかをチェックするために使われます。

if (is_plugin_active('akismet/akismet.php')) {
    echo 'Akismetプラグインは有効です。';
} else {
    echo 'Akismetプラグインは無効です。';
}

使い方の解説

is_plugin_active() は、プラグインのメインファイル(プラグインディレクトリ名/プラグインファイル名.php)のパスを指定して、プラグインの有効化状態を判定します。この関数を使用するためには、wp-admin/includes/plugin.php をロードする必要があります。

include_once(ABSPATH . 'wp-admin/includes/plugin.php');

引数

$plugin (必須)

チェックするプラグインのメインファイルのパス(ディレクトリ名/ファイル名.php)。

例: 'akismet/akismet.php''woocommerce/woocommerce.php'

戻り値

true

プラグインが有効になっている場合に返されます。

false

プラグインが無効、または存在しない場合に返されます。

オプション

この関数には直接的なオプションはありません。ただし、プラグインのチェックにはメインファイルの正確なパスを指定する必要があります。

使用例

include_once(ABSPATH . 'wp-admin/includes/plugin.php');

if (is_plugin_active('contact-form-7/wp-contact-form-7.php')) {
    echo 'Contact Form 7が有効です。';
} else {
    echo 'Contact Form 7は無効です。';
}
  1. include_once: wp-admin/includes/plugin.php ファイルをインクルードすることで、is_plugin_active() を使用可能にします。
  2. is_plugin_active(): 'contact-form-7/wp-contact-form-7.php' で、Contact Form 7プラグインの有効化を確認します。
  3. プラグインの状態に応じて異なるメッセージを表示します。

一緒に使うことが多い関連タグ

is_plugin_active_for_network()

マルチサイト環境で、指定したプラグインがネットワーク全体で有効化されているかを確認します。

if (is_plugin_active_for_network('akismet/akismet.php')) {
    echo 'Akismetはネットワーク全体で有効です。';
} else {
    echo 'Akismetはネットワークで有効化されていません。';
}
if ( is_plugin_active_for_network('woocommerce/woocommerce.php') ) {
    echo 'WooCommerce はネットワーク全体で有効化されています。';
}

class_exists()

プラグインが特定のクラスを持っている場合、is_plugin_active() ではなく class_exists() で判定することも可能です。

if ( class_exists('WooCommerce') ) {
    echo 'WooCommerce が有効です。';
}

function_exists()

特定の関数が存在するかどうかでプラグインの有効・無効を判定することも可能です。

if ( function_exists('acf_add_local_field_group') ) {
    echo 'Advanced Custom Fields が有効です。';
}

追加情報を取得したい場合

プラグインの状態に関するさらなる情報を取得する場合、get_plugins() 関数を使用して、インストールされているすべてのプラグイン情報を取得できます。

get_plugins() でプラグイン情報を取得

include_once(ABSPATH . 'wp-admin/includes/plugin.php');
$plugins = get_plugins();
foreach ($plugins as $path => $details) {
    echo 'プラグイン名: ' . $details['Name'] . '<br>';
    echo 'バージョン: ' . $details['Version'] . '<br>';
}

出力できる情報

  • Name: プラグイン名
  • Version: プラグインのバージョン
  • Author: プラグイン開発者
  • Description: プラグインの説明

想定されるトラブル

プラグインパスの間違い

正確なプラグインのメインファイルのパスを指定してください(例: 'akismet/akismet.php')。

マルチサイト環境で意図した結果が得られない

is_plugin_active() ではなく is_plugin_active_for_network() を使用します。

is_plugin_active() が見つからない

is_plugin_active()wp-admin/includes/plugin.php に含まれているため、テーマファイルで直接使用するとエラーになることがあります。

解決方法

require_once を使用して plugin.php を読み込んでから実行する。

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

プラグインのパスが間違っている

プラグインのスラッグが間違っていると is_plugin_active() は正しく動作しません。

解決方法

プラグインのパスを確認 する。
WordPress の /wp-content/plugins/ 内のフォルダ名とメインファイル名を確認し、正しく記述する。

is_plugin_active('woocommerce/woocommerce.php'); // 正しい
is_plugin_active('woocommerce.php'); // 間違い

Q&A

マルチサイトで特定のプラグインが有効かどうかを確認する方法は?

is_plugin_active_for_network() を使用して、プラグインがネットワーク全体で有効かどうかを確認します。

プラグインがインストールされているかどうかだけを確認できますか?

はい、get_plugins() 関数でインストール済みのプラグインを取得し、その中に目的のプラグインが含まれているかを確認できます。

is_plugin_active() はフロントエンドでも使えますか?

いいえ、通常は管理画面の関数なので、フロントエンドで使用する場合は wp-admin/includes/plugin.php をインクルードする必要があります。

is_plugin_active() の代わりに function_exists() を使うべき?

プラグインによっては function_exists() の方が軽量で動作が速いことがあります。例えば、Contact Form 7 をチェックする場合は、以下のように書けます。

if ( function_exists('cf7_add_local_field_group') ) {
    echo 'Contact Form 7 は有効です。';
}

まとめ

is_plugin_active() は、指定したプラグインが有効かどうかをプログラムで確認するための関数です。管理画面用の wp-admin/includes/plugin.php をインクルードすることで、使用可能になります。class_exists()function_exists() も代替手段として利用できます。is_plugin_active_for_network() を使うとマルチサイト環境での有効化をチェックできる。依存関係のあるプラグインが有効化されているかどうかを確認する際に便利です。

よかったらシェアしてね!
  • URLをコピーしました!
目次