別のプラグインへのパスを取得する


10

プラグインへのパスを取得するには、使用できますplugin_dir_path(__FILE__)が、これは明らかにプラグイン内から呼び出す必要があります。

プラグインAからプラグインB()へのパスを確実に取得するにはどうすればよいですpluginb/pluginb.phpか?

編集:想定しているのは、あなたが求めているプラ​​グインのスラッグを知っているということです(実際にはから取得できますget_plugins())。しかし、私はそれが一般的に機能することを望みます。


これはプラグインに適用されますか?または1つまたは複数ですか?後者の場合、それらはあなた自身のものですか、それとも公開リリースですか?
TheDeadMedic

だから私はあなたがあなたが追いかけているプラ​​グインのスラグを知っていると仮定しています:例pluginb/pluginb.php、しかしそのサードパーティ。
スティーブンハリス

回答:


9

私の最も良い推測は:

if ( ! is_file( $dir = WPMU_PLUGIN_DIR . '/pluginb/pluginb.php' ) ) {
    if ( ! is_file( $dir = WP_PLUGIN_DIR . '/pluginb/pluginb.php' ) )
        $dir = null;
}

return $dir;

ただし、ここでの危険性は依然としてプラグインの「ベース名」の想定です。適切に作成されたプラグインは、そのディレクトリやメインファイルの名前が(何らかの理由で)変更された場合でも機能します。

これは私の元のコメントに戻ります- これが参照しているサードパーティのプラグインに応じて、多くの作成者はプラグインパスを保持するために独自のメソッド/定数を定義します-それらの存在を確認して代わりに使用することは理にかなっています(可能な場合) )。


ええと、私は質問を更新しました:)。あなたはプラグインのスラッグを手に入れることができますget_plugins()-私のユースケースでは十分です。特定のプラグインを探していて、これ以上何も利用できない場合は、で名前を指定してプラグインを検索できますget_plugins()
Stephen Harris

+1理想的には定数の使用を避けたい-しかし、このソリューションは少なくともそれらを使用するときにチェックします:)-そして、コアはどのように動作するようです。
スティーブンハリス

2

したがって、1つの方法はplugin_dir_path()、現在のプラグイン内で呼び出し、独自のプラグインディレクトリ名を、使用しているプラ​​グインのスラッグのプラグイン名に置き換えることです(pluginb/pluginb.php):

だから私たちのプラグイン内でplugina/plugina.php

$plugin_b = str_replace('plugina/','pluginb/pluginb.php',plugin_dir_path(__FILE__));
echo $plugin_b; //Prints path/to/pluginb/pluginb.php';

プラグインBはAと同じディレクトリにあるという前提があるため、これはお勧めしません(これは必ずしもMUプラグインである必要はありません)。
TheDeadMedic

ありがとう、私が見逃してしまうものがあると思いました:)
Stephen Harris

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.