プラグインへのパスを取得するにはplugin_dir_path(__FILE__)
を使用することができます - しかしこれは明らかにプラグイン内から呼び出される必要があります。
どうすれば 確実に プラグインA内からプラグインB(pluginb/pluginb.php
)へのパスを取得できますか?
編集: それはあなたがあなたが追いかけているプラグインのスラッグを知っていると仮定した(実際にはあなたはget_plugins()
からそれらを得ることができる)。しかし、私はそれが一般的に機能したいのですが。
私の一番の推測は、
if ( ! is_file( $dir = WPMU_PLUGIN_DIR . '/pluginb/pluginb.php' ) ) {
if ( ! is_file( $dir = WP_PLUGIN_DIR . '/pluginb/pluginb.php' ) )
$dir = null;
}
return $dir;
しかしながら、ここでの危険は依然としてプラグインの "basename"の仮定です - よく書かれたプラグインはそのディレクトリやメインファイル、あるいはその両方が(なんらかの理由で)リネームされていても機能します。
これは私の元のコメントに戻ります - which サードパーティプラグインによって異なりますが、多くの作者はプラグインパスを保持するために独自のメソッド/定数を定義しています - 代わりに(利用可能な場合).
したがって、現在のプラグイン内で 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';
PluginAでWP_PLUGIN_DIR
定数を使用してください。例えば:
include_once(WP_PLUGIN_DIR.'/pluginb/pluginb.php');
追加情報: https://codex.wordpress.org/Determining_Plugin_and_Content_Directories