在编写 WordPress 插件时,您经常需要引用 WordPress 安装中以及您的插件或主题内的各种文件和文件夹。

WordPress 提供了几个函数来轻松确定给定文件或目录的位置。在插件中始终使用这些函数,而不是硬编码对 wp-content 目录的引用或使用 WordPress 内部常量。

WordPress 允许用户将他们的 wp-content 目录放置在任何他们想要的地方,并将其重命名为任何他们想要的名称。永远不要假设插件将位于 wp-content/plugins,上传文件将位于 wp-content/uploads,或者主题将位于 wp-content/themes。

PHP 的 __FILE__ 魔术常量会自动解析符号链接,因此如果 wp-content 或 wp-content/plugins 甚至单个插件目录被符号链接,硬编码的路径将无法正常工作。

常用用法

如果您的插件包含 JavaScript 文件、CSS 文件或其他外部文件,那么您可能需要这些文件的 URL 以便将它们加载到页面中。为此,您应该使用 plugins_url() 函数,如下所示:

plugins_url( 'myscript.js', __FILE__ );

这将返回 myscript.js 的完整 URL,例如 example.com/wp-content/plugins/myplugin/myscript.js。

要将插件的 JavaScript 或 CSS 加载到页面中,您应该分别使用 wp_enqueue_script() 或 wp_enqueue_style(),并将 plugins_url() 的结果作为文件 URL 传递。

可用函数

WordPress 包含许多其他函数,用于确定插件、主题和 WordPress 本身中文件或目录的路径和 URL。有关每个函数的完整使用信息,请参阅各个 DevHub 页面。

插件

plugins_url()
plugin_dir_url()
plugin_dir_path()
plugin_basename()

主题

get_template_directory_uri()
get_stylesheet_directory_uri()
get_stylesheet_uri()
get_theme_root_uri()
get_theme_root()
get_theme_roots()
get_stylesheet_directory()
get_template_directory()

站点首页

home_url()
get_home_path()

WordPress

admin_url()
site_url()
content_url()
includes_url()
wp_upload_dir()

多站点

get_admin_url()
get_home_url()
get_site_url()
network_admin_url()
network_site_url()
network_home_url()

常量

WordPress 在确定内容和插件目录的路径时使用以下常量。插件或主题不应直接使用这些常量,但此处列出以供参考。

WP_CONTENT_DIR  // 无尾随斜杠,仅完整路径
WP_CONTENT_URL  // 完整 URL 
WP_PLUGIN_DIR  // 完整路径,无尾随斜杠
WP_PLUGIN_URL  // 完整 URL,无尾随斜杠

// 在多站点中默认可用,单站点安装中未设置
// 可在单站点安装中使用(通常:请自担风险)
UPLOADS // (如果已设置,上传文件夹相对于 ABSPATH)(例如:/wp-content/uploads)

相关

WordPress 目录:

home_url()首页 URLhttp://www.example.com
site_url()站点目录 URLhttp://www.example.com 或 http://www.example.com/wordpress
admin_url()管理目录 URLhttp://www.example.com/wp-admin
includes_url()包含目录 URLhttp://www.example.com/wp-includes
content_url()内容目录 URLhttp://www.example.com/wp-content
plugins_url()插件目录 URLhttp://www.example.com/wp-content/plugins
wp_upload_dir()上传目录 URL(返回数组)http://www.example.com/wp-content/uploads