plugin_dir_url()
云策文档标注
概述
plugin_dir_url() 函数用于获取插件文件的 URL 目录路径,并自动添加尾部斜杠。它基于传入的 __FILE__ 参数,返回包含该文件的插件目录的完整 URL。
关键要点
- 参数:接受一个字符串参数 $file,通常是插件的 __FILE__ 常量,表示插件文件的路径。
- 返回值:返回一个字符串,即包含插件的目录的 URL 路径,末尾带有斜杠。
- 内部实现:函数调用 plugins_url('', $file) 并应用 trailingslashit() 来确保尾部斜杠。
- 用途:主要用于在插件中引用静态资源(如 CSS、JavaScript、图像文件),通过拼接路径来生成完整 URL。
- 相关函数:与 plugins_url() 和 trailingslashit() 紧密相关,plugin_dir_url() 用于 URL,而 plugin_dir_path() 用于文件系统路径。
代码示例
// 示例1:在插件中注册并排队 CSS 文件
function myplugin_scripts() {
wp_register_style( 'foo-styles', plugin_dir_url( __FILE__ ) . 'assets/foo-styles.css' );
wp_enqueue_style( 'foo-styles' );
}
add_action( 'wp_enqueue_scripts', 'myplugin_scripts' );
// 示例2:排队 JavaScript 和 CSS 文件
function enqueue_scripts() {
wp_enqueue_script( 'custom-js', plugin_dir_url( __FILE__ ) . 'js/custom.js', array( 'jquery' ), '', true );
wp_enqueue_style( 'style-css', plugin_dir_url( __FILE__ ) . 'css/style.css' );
}
add_action( 'wp_enqueue_scripts', 'enqueue_scripts');注意事项
- 确保传入正确的 __FILE__ 参数,否则可能返回错误的目录路径。例如,使用 __DIR__ 会返回父目录的 URL。
- 此函数返回的是 URL 路径,适用于前端资源引用;对于包含 PHP 文件,应使用 plugin_dir_path()。
- 函数自 WordPress 2.8.0 版本引入,兼容性良好。
原文内容
Get the URL directory path (with trailing slash) for the plugin __FILE__ passed in.
Parameters
$filestringrequired-
The filename of the plugin (__FILE__).
Source
function plugin_dir_url( $file ) {
return trailingslashit( plugins_url( '', $file ) );
}
Changelog
| Version | Description |
|---|---|
| 2.8.0 | Introduced. |
Skip to note 4 content
10Horizons Plugins
Let’s say current URL is: http://example.com/wp-content/plugins/my-plugin/includes/
echo plugin_dir_url( __FILE__ ).'images/placeholder.png';will output: http://example.com/wp-content/plugins/my-plugin/includes/images/placeholder.png
echo plugin_dir_url( __DIR__ ).'images/placeholder.png';will output: http://example.com/wp-content/plugins/my-plugin/images/placeholder.png
echo plugin_dir_url( __FILE__ ).'images/placeholder.png';will output http://example.com/wp-content/plugins/my-plugin/includes/pages/images/placeholder.pngecho plugin_dir_url( __DIR__ ).'images/placeholder.png';will output http://example.com/wp-content/plugins/my-plugin/includes/images/placeholder.png Which is still not the plugin directory, but only one directory above. I’m still searching for a logical function that returns the root of our plugins.Skip to note 5 content
Codex
Basic Example
/** * Include CSS file for MyPlugin. */ function myplugin_scripts() { wp_register_style( 'foo-styles', plugin_dir_url( __FILE__ ) . 'assets/foo-styles.css' ); wp_enqueue_style( 'foo-styles' ); } add_action( 'wp_enqueue_scripts', 'myplugin_scripts' );Would echo:
<a href="http://example.com/wp-content/plugins/my-plugin/assets/foo-styles.css" rel="nofollow ugc">http://example.com/wp-content/plugins/my-plugin/assets/foo-styles.css</a>Skip to note 6 content
TRooInbound
<em>plugin_dir_url( __FILE__ ) == http://your-url.com/wp-content/plugins/your-plugin/</em>function enqueue_scripts() { wp_enqueue_script( 'custom-js', plugin_dir_url( __FILE__ ) . 'js/custom.js', array( 'jquery' ), '', true ); wp_enqueue_style( 'style-css', plugin_dir_url( __FILE__ ) . 'css/style.css' ); } add_action( 'wp_enqueue_scripts', 'enqueue_scripts'); function admin_enqueue_scripts() { wp_enqueue_script( 'custom-js', plugin_dir_url( __FILE__ ) . 'js/custom.js', array( 'jquery' ), '', true ); wp_enqueue_style( 'style-css', plugin_dir_url( __FILE__ ) . 'css/style.css' ); } add_action( 'admin_enqueue_scripts', 'admin_enqueue_scripts');Use it to include your assets (images, css, js etc).
Use it to include php files.