WordPressのドキュメント「 プラグインとコンテンツディレクトリの決定 」には、次のように記載されています。
WordPressは、コンテンツおよびプラグインディレクトリへのパスを決定するときに、次の定数を使用します。 これらはプラグインやテーマで直接使われるべきではありません が、完全を期すためにここにリストされています。
テーマとプラグインの開発者が使用すべきではない定数の中で、WP_CONTENT_DIR
とWP_PLUGIN_DIR
をリストしています。
WordPressでは、ユーザーが自分のwp-contentディレクトリを好きな場所に配置できるので、プラグインがwp-content/pluginsにある、またはアップロードがwp-content/uploadsにある、またはテーマがwp-コンテンツ/テーマ.
Mark Jaquith氏はまた、 ここにコメントしています これらの定数は使用しないでください。
WP_PLUGIN_URLまたはWP_PLUGIN_DIRを使用しないでください - プラグインはpluginsディレクトリにないかもしれません。
それでは、これらの定数を使わずにプラグイン、wp-content、themesフォルダへのフルパスを参照するための一般的な方法は何ですか?
簡単な例として、インストールされているすべてのプラグインのフルパスを出力するには、次のようにします。
<?php
$plugins = get_plugins();
foreach ($plugins as $file => $details) {
echo WP_PLUGIN_DIR . '/' . $file . '<br>';
}
これは以下のようなリストを作成します。
/var/www/wp-content/plugins/akismet/akismet.php
/var/www/wp-content/plugins/debug-bar/debug-bar.php
/var/www/wp-content/plugins/hello.php
(たとえば、ユーザーがサイトのバックアップの一部としてプラグインを選択的にアーカイブできるようにするためのプラグインを作成している場合は、これを実行することをお勧めします。)
WP_PLUGIN_DIR
の使用が間違っている場合、推奨される代替方法は何ですか?私が見つけることができるプラグイン、テーマ、そしてwp-contentフォルダには wp_upload_dir()
に相当するものはありません。
現在のパスを参照するには
plugin_dir_path( __FILE__ )."further/nesting/here.css";
プラグインとテーマで動作します。
プラグインまたはテーマファイルを指すには、次を使用します
plugins_url( "path/to/file", __FILE__ );
プラグインでのみ機能します
wp-admin
フォルダーのURl/URiを参照する常にadmin_url( 'some/path' );
を指すようにします。 get_admin_url()
もあります。
wp-includes
フォルダーのURl/Uriを参照それらを指す includes_url( 'some/path' );
home_url( 'etc' );
またはそのためのget_home_url()
があります。同様は get_site_url()
およびsite_url()
です。次に、 network_home_url()
もあります。そして、あなたは network_admin_url()
を得た
wp-content
または名前が変更されたディレクトリwp-content
フォルダー名を再定義できます。したがって、 content_url()
を使用します。
WP_PLUGIN_DIRの使用が間違っている場合、推奨される代替手段は何ですか?
パラメーターなしでplugins_url()
を使用するだけです。
プラグインに使用すると、MUプラグインでも機能します。
編集#1現在のプラグインへのパスに興味がある場合は、plugin_basename();
を使用します。
編集#2すべてのサイドワイドアクティブプラグインに関心がある場合は、wp_get_active_network_plugins();
を使用します。
マルチサイトを使用していない場合は、 wp_get_active_and_valid_plugins();
を使用します。これには、マルチサイト/ネットワークが考慮されます。マルチサイトを使用していないが、sunrise.php
ドロップインを取得した場合、これは考慮に入れられることに注意してください。
あなたはcouldもget_option( 'active_plugins' );
を介してそれらを取得することができます。これは推奨されませんです。これはフィルターとプラグインの検証を考慮しないためです。 。
このリストは延々と続く。詳細については、 QueryPosts.com の検索結果をご覧ください。
これarticle はすべてのパスについてabsolute depthになります。
現在のプラグインのディレクトリのサーバパスを返します。
plugin_dir_path(__FILE__)
// example: /home/myserver/public_html/wordpress_install/wp-content/plugins/exampleplugin/
参照: https://codex.wordpress.org/Function_Reference/plugin_dir_path
混同しないでください。
plugins_dir_path(__FILE__)
(複数の "plugin s "に注意してください。)
あなたはプラグインのディレクトリ名が返されたくないので、それを取り除かなければなりません。これはプラグインディレクトリとファイル名を返す関数です。
plugin_basename(__FILE__)
// example: exampleplugin/exampleplugin.php
しかし、もちろんプラグインのファイル名も必要ないので、最初にplugin_basename(__FILE__)
から削除する必要があります。プラグインのファイル名を返すには:
basename(__FILE__)
// example: exampleplugin.php
そのため、これらを使用してpluginsディレクトリへのパスを作成するには、str_replace()
関数を次のように使用します。
$myBnm = basename(__FILE__); // value: exampleplugin.php
$myDir = plugin_basename(__FILE__); // value: exampleplugin/exampleplugin.php
$myStr = str_replace($myBnm,"",$myDir); // value: exampleplugin/
$myPth = plugin_dir_path(__FILE__); // value: /home/myserver/public_html/wordpress_install/wp-content/plugins/exampleplugin/
return str_replace($myStr,"",$myPth); // returns: /home/myserver/public_html/wordpress_install/wp-content/plugins/
そして必要ならば、繰り返し使用するために、もちろんその最終行を変数に割り当てることができます。
の代わりに:
return str_replace($myStr,"",$myPth); // returns: /home/myserver/public_html/wordpress_install/wp-content/plugins/
のようなものを使う:
$thePlgDir = str_replace($myStr,"",$myPth); // returns: /home/myserver/public_html/wordpress_install/wp-content/plugins/
そして後で、必要に応じて:
return $thePlgDir;