WordPressでプラグインのフルパスを返す関数はありますか?
例は
_path/wp-contents/plugins/myplugin
_
plugin_dir_path(__FILE__)
を試しましたが、現在のディレクトリを返します。
plugin_dir_path の説明によると、現在のプラグインファイルのパスが表示されます。しかし、ここであなたが尋ねることによって、残念ながら直接的な方法ではない以下のようなことができます、
$plugin_dir = ABSPATH . 'wp-content/plugins/plugin-folder/';
このケースを解決するには、WordPress内部定数を使用することをお勧めします。
$my_plugin = WP_PLUGIN_DIR . '/my-plugin';
if ( is_dir( $my_plugin ) ) {
// plugin directory found!
}
代替
他の有効な代替方法は、URLからパスを計算することです。これは、より複雑でわかりにくいものです。私はこのコードを使用しません:
$plugins_url = plugins_url();
$base_url = get_option( 'siteurl' );
$plugins_dir = str_replace( $base_url, ABSPATH, $plugins_url );
// Now $plugins_dir is same as the WP_PLUGIN_DIR constant.
$my_plugin = $plugins_dir . '/my-plugin';
この場合の私の意見は次のとおりです。定数WP_PLUGIN_DIR
を使用します
プラグインルートパスのコード
$dir = plugin_dir_path( __FILE__ );
// Example: /home/user/var/www/wordpress/wp-content/plugins/my-plugin/
プラグインパスのコード
echo WP_PLUGIN_DIR.'/plugin-name';
私の解決策は、plugin_dir_path内で使用することでした[〜#〜] dir [〜#〜]
plugin_dir_path( __DIR__ ) . $path_inside_plugin_folder;
上記は、サーバー上のプラグインフォルダーへの絶対パスを提供し、プラグインフォルダー内の任意のファイルで変数をロードできます。
残念ながら、ここでの回答のほとんどは重要なことを忘れているようです。
プラグインdirを除き、プラグインも plugins dirを使用する必要があります
そのため、複数のディレクトリを確認する必要があります。関数の例
function get_plugin_dir_path($pluginFolderName){
if ( defined( 'WPMU_PLUGIN_DIR' ) && file_exists( trailingslashit( WPMU_PLUGIN_DIR ) . $pluginFolderName ) ) {
return trailingslashit( WPMU_PLUGIN_DIR ) . $pluginFolderName;
} elseif ( defined( 'WP_PLUGIN_DIR' ) && file_exists( trailingslashit( WP_PLUGIN_DIR ) . $pluginFolderName ) ) {
return trailingslashit( WP_PLUGIN_DIR ) . $pluginFolderName;
}
return false;
}
次のコードをお勧めします。サブフォルダーからこの関数にアクセスしている場合。
plugins_url( 'images/logo.png' , dirname(__FILE__ ));
プラグインのルート内にいない場合の解決策は次のとおりです
4.7.5、WordPress 持っていない a get_plugins_root()get_theme_root() function。これはおそらく、テーマからプラグインを変更する必要は本当にないはずであり、プラグインのルートディレクトリは変更されないためです。
ただし、テーマの開発中にプログラムでプラグインに影響を与える必要がある場合に役立ちます。
単純に、WPはテーマルートに対して行います:
$plugin_root = WP_CONTENT_DIR . '/plugins';
または、関数が必要な場合は、同じ方法でWordPressがテーマルートに対して行うのと同じようにしないのはなぜですか?
関数のコピーを作成しますget_theme_root() from wp-includes/theme.phpからテーマのfunctions.phpファイルに貼り付け、関数の名前をget_plugins_root()に変更します、それを簡素化し、関数の「テーマ」を「プラグイン」に変更します...
get_plugins_root() {
$plugins_root = WP_CONTENT_DIR . '/plugins';
/**
* Filters the absolute path to the plugins directory.
*
* @since now
*
* @param string $plugins_root Absolute path to plugins directory.
*/
return apply_filters( 'plugins_root', $plugins_root );
}
パスを使用して、影響するプラグインフォルダー名を追加できるようになりました。
$the_plugin_root = get_plugins_root()."/the-plugin-name/";
plugin_dir_path( __FILE__ )
はプラグインを提供します現在のファイルのパス。
これは、"your_plugin_dir/sub_dir/file.php"の内部でこの関数を呼び出すと、"your_plugin_dir/sub_dir /"が返されることを意味します
プラグインディレクトリの[〜#〜] root [〜#〜]を取得する場合は、__FILE__
から__DIR__
plugin_dir_path( __DIR__ )
セクションCommon Usage
of Plugins Url 関数のリファレンスページ、それは私のために働いたものです:
プラグインディレクトリのサブディレクトリ内にネストされたファイルでplugins_url()関数を使用している場合、PHPのdirname()関数を使用する必要があります。
echo plugins_url('', dirname(__FILE__) );
この出力は次のとおりです。
http://domain/app/wp-content/plugins/my-plugin
関数を呼び出したファイルは私のfunctions.php
内部includes
ので、私のファイルへの完全なパスは:
http://domain/app/wp-content/plugins/my-plugin/includes/functions.php
ちょっとこのパーティーに遅れましたが、他の誰かがこれにつまずくのをちょうど包んでください。
plugin_dir_path(__FILE__)
は常に現在のパス(それを呼び出しているファイルが置かれている場所)を返します。ルートが必要な場合は、以下のコードを使用します
plugin_dir_path( dirname( __FILE__ ) )
その後、定数を定義できます
define( 'YOUR_PLUGIN_DIR', plugin_dir_path( dirname( __FILE__ ) ) );
require_once YOUR_PLUGIN_PATH . 'includes/admin-page.php'
require_once YOUR_PLUGIN_PATH . 'admin/classes.php'
メインのPhpファイルに変数を定義できます。プラグインフォルダーのルートにある必要があります。ファイルはここにあるはずです:.../wp-content/plugins/plugin-folder/my-plugin.php
この行をファイルに追加できます。
define( 'MYPLUGIN__PLUGIN_URL', plugins_url('', __FILE__ ) );
プラグインのどこでも新しい変数を使用できます。
public function Test()
{
$folder2 = MYPLUGIN__PLUGIN_URL . '/folder1/folder2/';
// $folder2 = .../wp-content/plugins/plugin-folder/folder1/folder2/
}
私はそれが誰かを助けることを願っています。
この方法を使用して獲得できます
plugin_dir_url( __DIR__ )