プラグインがWordPressでアクティブかどうかを確認する方法[3つの方法]

公開: 2020-08-08

プラグインがWordPressでアクティブかどうかを確認します WordPress開発者として、プラグインを開発する際のコードで最も一般的なチェックの1つは、プラグインのアクティブ化のステータスです。プラグインがアクティブかどうかをチェックする必要がある理由はいくつかあります。 いくつか言及すると、依存プラグインがアクティブであるかどうか、または同じことを行う同様のプラグインであるかどうかを確認できます。

いずれの場合も、プラグインベースファイルにチェックを追加して、ターゲットのプラグインがアクティブかどうかを確認する必要があります。 WooCommerceクラスを拡張するWooCommerceプラグインを開発している場合の典型的な例。

たとえば、WooCommerceペイメントゲートウェイプラグインを開発している場合、プラグインがアクティブ化された直後、またはできればプラグインアクティブ化フック中にWooCommerceがアクティブであるかどうかを確認する必要があります。

WordPressプラグインがアクティブかどうかを確認する

幸い、WordPressコアには、特定のプラグインがアクティブであるかどうかをチェックし、trueまたはfalseを返すすぐに使用できるメソッドまたは関数があります。

is_plugin_active WordPress

この関数はboolean - true or false )を返し、特にアクティベーションフック中にコードに簡単に組み込むことができます。

チェックしているプラ​​グインがアクティブでない場合は、ユーザーがプラグインをインストールするためのヘッダー通知を表示できます。

プラグインの機能と競合する可能性のある別のプラグインをユーザーに非アクティブ化させたい場合にも、同じ機能を適用できます。

関数is_plugin_active()クイックレビュー

関数is_plugin_active()を簡単に見て、プロジェクトで効果的に使用する方法を学びましょう。

is_plugin_active( string $plugin )

この関数は、pluginsディレクトリ内のプラグイン相対パスへのパスを表す文字列パラメータを取ります。

 関数is_plugin_active($ plugin){
    return in_array($ plugin、(array)get_option( 'active_plugins'、array()))|| is_plugin_active_for_network($ plugin);
}

たとえば、WooCommerce is path is woocommerce/woocommerce.phpに示されているように、
下の画像:
WooCommerceベースファイルファイルパス

関数is_plugin_active()は、次のコードスニペットを使用して、プラグインがバックエンドでアクティブであるかどうかを確認するために使用できます。

 <?php
/ **
*プラグインを検出します。 管理エリアでのみ使用します。
* /
if(is_plugin_active( 'plugin-directory / plugin-file.php')){
//プラグインがアクティブ化されます
}

たとえば、WooCommerceがアクティブかどうかを確認する場合は、次のコードを使用して確認できます。

 <?php
/ **
*管理エリアでWooCommerceプラグインがアクティブかどうかを確認します
* /
if(is_plugin_active( 'woocommerce / woocommerce.php')){
// WooCommerceプラグインがアクティブ化されました
}

プラグインベースファイルとベースディレクトリ

ご覧のとおり、上の画像を使用して説明したように、WooCommerceプラグインのベース名とフォルダーを使用しました。
プラグインのベース名は、メインファイルである単一ファイルプラグインのファイル名であり、ディレクトリ/フォルダと一致する場合もありますが、すべての場合とは一致しません。一部のプラグインは異なります。

プラグインがマルチサイトでアクティブかどうかを確認します

WordPressマルチサイトの場合、プラグインがマルチサイトネットワークでアクティブかどうかを開発者が確認できるように設計された機能があります。 関数は:

is_plugin_active_for_network( string $plugin )

この関数はis_plugin_active(string $ plugin)関数と同じように機能し、プラグインがWordPressマルチサイトネットワーク全体でアクティブであるかどうかを判断するために同じ方法で適用できます。

 <?php
function is_plugin_active_for_network($ plugin){
    if(!is_multisite()){
        falseを返します。
    }
 
    $ plugins = get_site_option( 'active_sitewide_plugins');
    if(isset($ plugins [$ plugin])){
        trueを返します。
    }
 
    falseを返します。
}

プラグインがアクティブかどうかを確認する他の方法

プラグインがアクティブかどうかを確認するために使用できる方法は他にもあります。 ネイティブのphp関数class_existsまたはfunction_existsを使用して確認できます。 これらのメソッドは、プラグインまたは関数のクラスがそれぞれ存在するかどうかをチェックします。

function_exists()を使用してプラグインがアクティブかどうかを確認する

プラグインの関数またはメソッドを知っている場合は、以下のスニペットのようにfunction_existsメソッドを使用して確認できます。

 <?php
if(function_exists( 'plugin_function')){
//プラグインはアクティブです
}

class_exists()を使用してプラグインがアクティブかどうかを確認する

プラグインのメインクラスを知っている場合は、以下のスニペットのようにclass_existsメソッドを使用して確認できます。

 <?php
if(class_exists( 'plugin_class')){
//プラグインはアクティブです
}

以下のコードスニペットのように、これらのメソッドのいずれかをフックして、 plugins_loadedフックでプラグインがアクティブかどうかを確認できます。

 <?php
/ *
*プラグインがアクティブかどうかをテストします
* /

関数njengah_is_plugin_name_active(){
if(class_exists( 'Plugin_Class')){

//アクティブなので、ここでロジックを実行します

}
}
add_action( 'plugins_loaded'、 'njengah_is_plugin_name_active');

結論

この投稿では、別のプラグインまたはテーマを開発しているときにプラグインがアクティブであるかどうかを確認するさまざまな方法を取り上げました。 これらは、すべてのWordPress開発タスクに適用できる便利な方法です。

同様の記事