繁体   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