WP_CONTENT_DIRおよびWP_PLUGIN_DIRの代わりに何を使用する必要がありますか?


15

プラグインおよびコンテンツディレクトリの決定に関する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を使用しないでください。プラグインはプラグインディレクトリにない場合があります。

だから、これらの定数を使用せずにプラグイン、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_upload_dir()私が見つけることができるプラグイン、テーマ、およびwp-contentフォルダーに相当するものはありません。



2
@CharlesClarkson私は質問の最初の文でそのページを参照します。上記の定数を使用しないようにと言っていますが、のようなものに代わるものを提案するものではないWP_PLUGIN_DIRため、ここで質問します。
ニック

回答:


17

現在のパスまたはより深くネストされた参照ファイル

現在のパスを参照するには

plugin_dir_path( __FILE__ )."further/nesting/here.css";

プラグインとテーマで動作します。

プラグインでURl / URiを参照する

プラグインまたはテーマファイルを指すには、次を使用します

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' );

サイトのホームに関連するURl / URi

ありますhome_url( 'etc' );get_home_url()そのため。同様にあるget_site_url()site_url()。それからもありnetwork_home_url()ます。そして、あなたはnetwork_admin_url()

wp-content または名前を変更したディレクトリ

wp-contentフォルダー名を再定義できます。したがって、そこで使用しcontent_url()ます。

プラグインフォルダーのURLを取得する方法は?

WP_PLUGIN_DIRの使用が間違っている場合、推奨される代替手段は何ですか?

plugins_url()パラメータなしで使用できます。

プラグインに使用すると、MUプラグインでも機能します。

編集#1現在のプラグインへのパスに興味がある場合は、を使用しますplugin_basename();

編集#2すべてのサイドワイドアクティブプラグインに関心がある場合は、を使用しますwp_get_active_network_plugins();

マルチサイトを使用していない場合は、に進みwp_get_active_and_valid_plugins();ます。これには、マルチサイト/ネットワークが考慮されます。マルチサイトを使用していないがsunrise.phpドロップインした場合、これによりアカウントが考慮されることに注意してください。

を使用してそれらを取得することもできますget_option( 'active_plugins' );、これはフィルターやプラグインの検証を考慮しないため、推奨されません。


参考文献

このリストは延々と続く。詳細については、QueryPosts.comの検索結果をご覧ください。

この記事では、中に入る絶対深すべてのパスについて。


3
これに感謝しますが、あなたの答えは絶対サーバーパスではなくURLを扱っているようです。これは私が興味を持っているものです。たとえばplugins_url()、サーバー上のディレクトリへのフルパスではなくプラグインフォルダーへのURLを返します。私が知らないディレクトリを処理するための同様の機能はありますか?または、WP_PLUGIN_DIR定数を使用しないというアドバイスは単に間違っていますか?
ニック

(私が説明するのを助けるために、私自身のコードを含むプラグイン以外のインストールされたプラグインへの完全なパスを見つけることに特に興味があります。)
ニック

@Nickアップデートを参照してください。
カイザー

「すべてのプラグインについて徹底的に説明している」という記事はもう利用できません。そして、私はまだを使用せずにプラグインディレクトリへの絶対パスを取得する方法を理解できませんWP_PLUGIN_DIR
XedinUnknown

4
  1. これは、現在のプラグインのディレクトリのサーバーパスを返します。

    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__)

    (お知らせ、複数の「プラグインのをその上」。)

  2. プラグインのディレクトリ名を返したくないので、削除する必要があります。プラグインディレクトリとファイル名を返す関数を次に示します。

    plugin_basename(__FILE__)
    
    // example: exampleplugin/exampleplugin.php
  3. しかしもちろん、プラグインのファイル名も必要ないため、plugin_basename(__FILE__)最初に削除する必要があります。プラグインのファイル名を返すには:

    basename(__FILE__)
    
    // example: exampleplugin.php
  4. したがって、これらを使用してプラグインディレクトリへのパスを作成するには、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/
  5. そして、必要に応じて、その最終行はもちろん繰り返し使用するために変数に割り当てることができます。

    の代わりに:

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