簡體   English   中英

plugin_dir_path(__FILE__) 和 __DIR__ 的區別

[英]Difference between plugin_dir_path(__FILE__) and __DIR__

尾部斜杠'/'是這兩者之間的唯一區別嗎? 如果是這樣,我可以使用trailingslashit(__DIR__)嗎?

  1. plugin_dir_path( __FILE__ )返回指向當前文件的服務器文件系統目錄路徑,即類似於

/home/www/your_site/wp-content/plugins/your-plugin/includes/

這可用於加載 PHP 文件。

更多信息: https : //developer.wordpress.org/reference/functions/plugin_dir_path/

  1. plugins_url()返回當前 WordPress 安裝的插件文件夾的網址,即類似於

http://example.com/wp-content/plugins

更多信息: https : //codex.wordpress.org/Function_Reference/plugins_url

  1. plugin_dir_url() 的行為方式與 plugins_url() 非常相似。 它還返回一個網址,但帶有一個斜杠,即類似於

http://example.com/wp-content/plugins/

后兩者對於加載圖像、樣式表、JS 很有用。

更多信息: https : //codex.wordpress.org/Function_Reference/plugin_dir_url

plugin_dir_url(__FILE__)此函數為您提供文件目錄的url

plugin_dir_url(__DIR__)此函數為您提供url插件文件夾。

__FILE__這個神奇的常量會給你文件所在的文件路徑

__DIR__這個神奇的常量會給你文件所在目錄的路徑

trailingslashit(__DIR__)這個函數將返回目錄的路徑和目錄的路徑后添加詞shash。

plugin_dir_path(__FILE__) 會給你與trailingslashit(__DIR__)相同的結果。 我建議使用插件目錄路徑,因為它是一種 wordpress 方式。

讓我們解開正在發生的事情:

wordpress 函數就這么簡單:

function plugin_dir_path( $file ) {
    return trailingslashit( dirname( $file ) );
}

所以,

include plugin_dir_path(__FILE__) . 'xx.php';

等於

include trailingslashit( dirname( __FILE__ ) ) . 'xx.php';

在 PHP 5.3 中, __DIR__被引入作為dirname( __FILE__ )的替代品。 如果你不需要支持 PHP < 5.3(你不需要),可以簡化為:

include trailingslashit( __DIR__ ) . 'xx.php';

(另請參閱: PHP 中的 __DIR__ 和 dirname(__FILE__) 之間有什么區別嗎?

由於__DIR__不返回帶有斜杠的內容,因此無需執行trailingslashit 所以我們可以進一步簡化為:

include __DIR__ . '/xx.php';

因此,總而言之,以下幾行都做完全相同的事情(在 PHP >= 5.3 上):

include plugin_dir_path(__FILE__) . 'xx.php';
include trailingslashit( dirname( __FILE__ ) ) . 'xx.php';
include trailingslashit( __DIR__ ) . 'xx.php';
include __DIR__ . '/xx.php';

哪個最好? 我更喜歡最后一個。 您不必輸入那么多,噪音更小,而且您不必擔心plugin_dir_path函數內部有什么魔力。 這就是通常在 PHP 中包含文件的方式。 一些牧師可能會說你應該用 Wordpress 的方式來做。 做一個叛逆者!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM