web-dev-qa-db-ja.com

Wordpressプラグインディレクトリを取得

WordPressでプラグインのフルパスを返す関数はありますか?

例は

_path/wp-contents/plugins/myplugin
_

plugin_dir_path(__FILE__)を試しましたが、現在のディレクトリを返します。

32
Cindy93

plugin_dir_path の説明によると、現在のプラグインファイルのパスが表示されます。しかし、ここであなたが尋ねることによって、残念ながら直接的な方法ではない以下のようなことができます、

$plugin_dir = ABSPATH . 'wp-content/plugins/plugin-folder/';
27
Rikesh

このケースを解決するには、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を使用します

44
Philipp

プラグインルートパスのコード

$dir = plugin_dir_path( __FILE__ );
// Example: /home/user/var/www/wordpress/wp-content/plugins/my-plugin/

プラグインパスのコード

echo  WP_PLUGIN_DIR.'/plugin-name';
14
Vivek Tamrakar

私の解決策は、plugin_dir_path内で使用することでした[〜#〜] dir [〜#〜]

plugin_dir_path( __DIR__ ) . $path_inside_plugin_folder;

上記は、サーバー上のプラグインフォルダーへの絶対パスを提供し、プラグインフォルダー内の任意のファイルで変数をロードできます。

3
Jbro

残念ながら、ここでの回答のほとんどは重要なことを忘れているようです。

プラグイン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;

}
2
Maciej Paprocki

次のコードをお勧めします。サブフォルダーからこの関数にアクセスしている場合。

plugins_url( 'images/logo.png' , dirname(__FILE__ ));
1
Lakin Mohapatra

プラグインのルート内にいない場合の解決策は次のとおりです

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/";
1
i_a

plugin_dir_path( __FILE__ )はプラグインを提供します現在のファイルのパス

これは、"your_plugin_dir/sub_dir/file.php"の内部でこの関数を呼び出すと、"your_plugin_dir/sub_dir /"が返されることを意味します

プラグインディレクトリの[〜#〜] root [〜#〜]を取得する場合は、__FILE__から__DIR__

plugin_dir_path( __DIR__ )
1

セクション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
1
Brosig

ちょっとこのパーティーに遅れましたが、他の誰かがこれにつまずくのをちょうど包んでください。

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'
0
decoder88

メインの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/
    }

私はそれが誰かを助けることを願っています。

0
M07

この方法を使用して獲得できます

plugin_dir_url( __DIR__ )
0
Nishad Burhan