WordPress 中获取各种路径和URL函数

发布于 2017-10-06 20:47:20 字数 6997 浏览 3178 评论 0

为了能让 WordPress 能运行的最快,很多开发者都是直接输入路径或者URL,而不是用 WordPress 的函数获取路径,这样其实兼容性很不好,同时这样的主题或者是插件也只能你自己使用,别人使用可能会出现错误,这样做得不偿失,为了避免错误,了解WordPress中与获取路径相关的函数很重要。

WordPress 中获取各种路径和URL函数

以下均假设 WordPress 站点安装在 https://www.wenjiangs.com 下。

站点路径相关函数

home_url()

返回站点路径,相当于后台设置-常规中的 站点地址(URL)

$url = home_url();
echo $url;
//输出: https://www.wenjiangs.com

$url = home_url('/images/');
echo $url;
//输出:https://www.wenjiangs.com/images/

site_url()

如果 WordPress 安装在域名根目录下,则该函数与 home_url() 相同。

如果 WordPress 安装在子目录下,例如 https://www.wenjiangs.com/,则 site_url() 返回WordPress实际安装地址,相当于后台->设置->常规中的 WordPress 地址(URL)

$url = site_url();
echo $url;
//假设WordPress安装在https://www.wenjiangs.com下
//输出:https://www.wenjiangs.com

admin_url()

返回后台地址,传递参数后也可返回后台 menu 的地址

$url = admin_url();
echo $url;
//输出:https://www.wenjiangs.com/wp-admin/

content_url()

返回实际的 wp-content 目录,如果是默认安装,且装在根目录下,则如下所示

$url = content_url();
echo $url;
//输出:https://www.wenjiangs.com/wp-content

如果在 wp-config.php 中改变了 wp-content 目录的位置,则该函数会返回正确地址,例如 wp-config.php 中如下定义

define('WP_CONTENT_DIR','/home/user/public_html/cdn');
define('WP_CONTENT_URL','https://www.wenjiangs.com');

content_url() 的返回值为

http://sola-cdn.me

includes_url()

返回当前 WordPress 站点存放核心文件的目录 wp-includes 的地址,可以带一个 $path 作为参数。

$url = includes_url( '/js/');
echo $url;
//输出:https://www.wenjiangs.com/wp-includes/js/

wp_upload_dir()

返回 WordPress 上传目录的地址,是一个数组,包含一系列与上传地址相关的信息。

<?php $upload_dir = wp_upload_dir(); ?>

提供如下信息给你

  • path – 上传目录的服务器绝对路径,通常以反斜杠(/)开头
  • url – 上传目录的完整 URL
  • subdir – 子目录名称,通常是以年/月形式组织的目录地址,例如/2012/07
  • basedir – 上传目录的服务器绝对路径,不包含子目录
  • baseurl – 上传目录的完整 URL,不包含子目录
  • error – 报错信息.

例如

$upload_dir = wp_upload_dir();
echo $upload_dir['baseurl'];
//输出:https://www.wenjiangs.com/wp-content/uploads

主题路径相关函数

get_theme_root_uri()

获取存放主题的目录 URI

echo get_theme_root_uri();
//输出:https://www.wenjiangs.com/wp-content/themes

get_theme_root()

获取存放主题的目录的服务器绝对路径

echo get_theme_root();
//输出:<tt>/home/user/public_html/wp-content/themes</tt>

get_theme_roots()

获取主题目录的目录名称,如果你的主题目录是 /wp-content/themes,则

echo get_theme_roots();
//输出:/themes

get_stylesheet_directory()

获取当前启用的主题目录的服务器绝对路径,例如

/home/user/public_html/wp-content/themes/twentyeleven

可以用来 include 文件,例如

include( get_stylesheet_directory() . '/includes/myfile.php');

get_stylesheet_directory_uri()

获取当前启用的主题目录的URI,例如

echo get_stylesheet_directory_uri();
//输出:https://www.wenjiangs.com/wp-content/themes/twentyeleven

可以使用在需要主题目录URI的场合,例如图片

<img src="<?php echo get_stylesheet_directory_uri() ?>/images/aternus.png" alt="" title="" width="" height="" />

get_template_directory_uri()

如果当前启用的主题是一个 child theme,该函数返回 parent theme 的主题目录 URI,用法与 get_stylesheet_directory_uri() 类似。

get_template_directory()

如果当前启用的主题是一个 child theme,该函数返回 parent theme 的主题目录的服务器绝对路径,用法与 get_stylesheet_directory() 类似。

get_template()

获取当前启用主题的主题目录名称,例如现在启用的主题为 twentyeleven,则

echo get_stylesheet();
//输出:twentyeleven

get_stylesheet()

获取当前启用主题的主题目录名称,与 get_template() 的区别是,如果用了 child theme,则返回 child theme 的目录名称。
插件路径相关函数

plugins_url()

获取当前插件的目录的 URI,例如一个插件位于 /wp-content/plugins/myplugin 下,该目录下放有插件的主文件名为 myplugin.php,在 myplugin.php 中执行下面的代码,结果如下

echo plugins_url();
//输出:https://www.wenjiangs.com/wp-content/plugins

echo plugins_url('',__FILE__);
//输出:https://www.wenjiangs.com/wp-content/plugins/myplugin

echo plugins_url('js/myscript.js',__FILE__);
//输出:https://www.wenjiangs.com/wp-content/plugins/myplugin/js/myscript.js

plugin_dir_url()

返回当前插件的目录URI,例如

echo plugin_dir_url(__FILE__ );
//输出:https://www.wenjiangs.com/wp-content/plugins/myplugin/

注意结尾有反斜杠。

plugin_dir_path()

返回当前插件目录的服务器绝对路径,例如

echo plugin_dir_path(__FILE__ );
//输出:/home/user/public_html/wp-content/plugins/myplugin/

可以用来引用文件,例如

define('MYPLUGINNAME_PATH', plugin_dir_path(__FILE__) );
require MYPLUGINNAME_PATH . 'includes/class-metabox.php';
require MYPLUGINNAME_PATH . 'includes/class-widget.php';

plugin_basename()

返回调用该函数的插件文件名称(包含插件路径)

例如在插件 myplugin 下的 myplugin.php 文件中调用该函数,结果如下

echo plugin_basename(__FILE__);
//输出:myplugin/myplugin.php

如果在 myplugin/include/test.php 文件中调用( test.php 通过 include 引用到 myplugin.php 中),结果如下

echo plugin_basename(__FILE__);
//输出:myplugin/include/test.php

路径相关常量

WordPress 中还有一组用 define 定义的常量代表路径。

WP_CONTENT_DIR

wp-content 目录的服务器绝对路径,例如

/home/user/public_html/wp-content

WP_CONTENT_URL

wp-content 目录的URI地址,例如

https://www.wenjiangs.com/wp-content

WP_PLUGIN_DIR

插件目录的服务器绝对路径,例如

/home/user/public_html/wp-content/plugins

WP_PLUGIN_URL

插件目录的URI地址,例如

https://www.wenjiangs.com/wp-content/plugins

TEMPLATEPATH

当前启用主题目录的服务器绝对路径,相当于 get_template_directory() 例如

/home/user/public_html/wp-content/themes/twentyeleven

STYLESHEETPATH

当前启用主题目录的服务器绝对路径,相当于 get_stylesheet_directory(),与 TEMPLATEPATH 的区别在于如果使用 child theme,该常量指向 child theme 目录。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

文章
评论
84963 人气
更多

推荐作者

七七

文章 0 评论 0

囍笑

文章 0 评论 0

盛夏尉蓝

文章 0 评论 0

ゞ花落谁相伴

文章 0 评论 0

Sherlocked

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文