【发布时间】:2011-01-22 05:10:36
【问题描述】:
如何在 WordPress CMS 中检索根目录的路径?
【问题讨论】:
标签: wordpress
如何在 WordPress CMS 中检索根目录的路径?
【问题讨论】:
标签: wordpress
查看 wordpress 根目录中 wp-config.php 文件的底部,您会发现如下内容:
if ( !defined('ABSPATH') ) 定义('ABSPATH',目录名(__FILE__)。'/');查看示例文件:
http://core.trac.wordpress.org/browser/trunk/wp-config-sample.php
您可以在您的 wordpress 脚本的其他地方使用这个名为 ABSPATH 的常量,并且在大多数情况下,它应该指向您的 wordpress 根目录。
【讨论】:
注意:这个答案真的很老了,从那以后,WordPress 领域的情况可能已经发生了变化。
我猜您需要从您的插件或主题中检测 WordPress 根目录。 我在FireStats 中使用以下代码来检测安装了 FireStats 的 WordPress 插件的根 WordPress 目录。
function fs_get_wp_config_path()
{
$base = dirname(__FILE__);
$path = false;
if (@file_exists(dirname(dirname($base))."/wp-config.php"))
{
$path = dirname(dirname($base))."/wp-config.php";
}
else
if (@file_exists(dirname(dirname(dirname($base)))."/wp-config.php"))
{
$path = dirname(dirname(dirname($base)))."/wp-config.php";
}
else
$path = false;
if ($path != false)
{
$path = str_replace("\\", "/", $path);
}
return $path;
}
【讨论】:
$path = dirname(... 的两条线都不以 ."/wp-config.php" 结尾
get_wp_path('wp-config.php');
这是一个老问题,但我有一个新答案。这一行将返回模板内的路径::)
$wp_root_path = str_replace('/wp-content/themes', '', get_theme_root());
【讨论】:
wp-content 更改为修改后的名称,它仍然可以工作。
echo ABSPATH; // 这里显示的是 WordPress 的绝对路径
ABSPATH 是 wp-config.php 文件中定义的常量。
【讨论】:
您可以使用 get_site_url() 函数来获取 wordpress 站点的基本 url。
欲了解更多信息,请访问http://codex.wordpress.org/Function_Reference/get_site_url
【讨论】:
此问题 Url & directory 有 2 个答案。无论哪种方式,优雅的方式是定义两个常量供以后使用。
define (ROOT_URL, get_site_url() );
define (ROOT_DIR, get_theme_root() );
【讨论】:
我认为这样可以解决问题:
function get_wp_installation()
{
$full_path = getcwd();
$ar = explode("wp-", $full_path);
return $ar[0];
}
【讨论】:
Please try this for get the url of root file.
第一种方式:
$path = get_home_path();
print "Path: ".$path;
// Return "Path: /var/www/htdocs/" or
// "Path: /var/www/htdocs/wordpress/" if it is subfolder
第二种方式:
And you can also use
"ABSPATH"
this constant is define in wordpress config file.
【讨论】:
如果您加载了 WordPress 引导程序,您可以使用 get_home_path() 函数获取 WordPress 根目录的路径。
【讨论】:
要检索路径,您可以使用函数<?php $path = get_home_path(); ?>。我不想只是重复这里已经说过的话,但我想再补充一点:
如果您使用的是 windows 服务器,这在 WordPress 安装中很少见,但有时仍会发生,您可能会遇到路径输出问题。它可能会在某处遗漏“\”,如果您将使用这样的路径,您将收到错误消息。所以在输出时一定要清理路径:
<?php
$path = get_home_path();
$path = wp_normalize_path ($path);
// now $path is ready to be used :)
?>
【讨论】:
主题根目录路径代码
<?php $root_path = get_home_path(); ?>
print "Path: ".$root_path;
返回“路径:/var/www/htdocs/”或“路径: /var/www/htdocs/wordpress/" 如果是子文件夹
主题根路径
$theme_root = get_theme_root();
echo $theme_root
结果:- /home/user/public_html/wp-content/themes
【讨论】:
试试这个函数获取根目录路径:
get_template_directory_uri();
【讨论】:
我喜欢@Omry Yadan 的解决方案,但我认为可以改进使用循环,以防您想继续向上遍历目录树,直到找到wp-config.php 实际所在的位置。当然,如果你没有找到它并最终进入服务器的根目录,那么一切都会丢失,我们会返回一个正常的值 (false)。
function wp_get_web_root() {
$base = dirname(__FILE__);
$path = false;
while(!$path && '/' != $base) {
if(@file_exists(dirname($base)).'/wp-config.php') {
$path = dirname($base);
} else {
$base = dirname($base);
}
}
return $path;
}
【讨论】:
我喜欢接受的答案和@cfx 的解决方案,但它们可以进一步整合:
function base_dir () {
$path = dirname(__FILE__);
while (true) {
if (file_exists($path."/wp-config.php")) {
return $path."/";
}
$path = dirname($path);
}
}
这允许您在 WordPress 未加载的文件中查找基本目录,例如动态创建的 javascript 和 css 文件。
【讨论】:
为什么要搞得这么复杂?一条命令:
Nginx
grep -i 'root' /etc/nginx/sites-enabled/*
阿帕奇
grep -i 'DocumentRoot' /etc/apache2/sites-enabled/*
【讨论】: