获取WordPress安装文件夹路径

时间:2012-06-08 01:56:40

标签: wordpress root document-root realpath installation-path

有没有办法获得安装WordPress的路径?

我使用以下内容:

$root = realpath($_SERVER["DOCUMENT_ROOT"]);

对于www.example.com来说很好 - >的/ usr /本地/ PEM /虚拟主机/ 165312 /网络空间/的httpdocs

对于www.example.com/blog来说这不太好,因为我需要对文件夹名称进行硬编码(博客)。

后来我找到了一种使用它的方法:

$iroot = getcwd();
$folder = explode("/", $iroot);
$dir = $folder[8]; // I know is 8
$root = realpath($_SERVER["DOCUMENT_ROOT"]);
require "$root/$dir/wp-blog-header.php";

但它仍然是很多复杂的东西。是否有一种简单的方法可以在没有硬编码的情况下安装WordPress(路径)?

注意:1 WordPress功能无法正常工作,因为这是以某种方式在WordPress之外。如上一个示例所述,在多个WordPress安装中确定WordPress安装路径的重点是require "wp-blog-header.php";,其中每个安装使用不同的文件夹(example.com/blog-one和example.com/blog-two) ),而不是WordPress MU或多站点。

注意:2 如果我使用require "$root/$dir/wp-blog-header.php";代替require "wp-blog-header.php";,只要文件位于同一文件夹中,它就会起作用,但在我的情况下,文件将是有时在不同的文件夹中。

8 个答案:

答案 0 :(得分:6)

使用ABSPATH常量:

<?php echo ABSPATH ?>

这应该打印你的WordPress路径。

答案 1 :(得分:3)

这就是我正在做的事情:

<强>设置

$docRoot = $_SERVER['DOCUMENT_ROOT'];
$scriptName = $_SERVER['SCRIPT_NAME'];
$queryArray = explode("/", $scriptName);
$queryLength = count($queryArray);

<强>用法

require_once($docRoot . ($queryLength > 2 ? "/".$queryArray[$queryLength - 2] : "" ) . '/wp-blog-header.php');

目前,无论脚本在何处,都可以很好地实现WordPress环境。绝对需要在使用任何 $ _ SERVER 变量之前进行清理(我需要在我的localhost环境之外进行三次检查),但我认为不需要进行严格的修改才能成为一个实用的通用解决方案。

答案 2 :(得分:2)

如果您正在尝试的是当前调用文件所在的目录,那么我会使用:

realpath(dirname(__FILE__))

这很大程度上取决于文件的位置。如果它与WordPress安装位于同一目录中,那么它将类似于:

<?php
    $root = realpath(dirname(__FILE__));
    require "$root/wp-blog-header.php";
?>

答案 3 :(得分:2)

根示例:

  • 的/ usr /本地/ PEM /虚拟主机/ 165312 /网络空间/的httpdocs /博客酮
  • 的/ usr /本地/ PEM /虚拟主机/ 165312 /网络空间/的httpdocs /博客二
  • 的/ usr /本地/ PEM /虚拟主机/ 165312 /网络空间/的httpdocs /一些-博客

以下示例适用于任何博客(“blog-one”,“blog-two”和“some-blog”),脚本或文件可以安装在博客的任何子文件夹。

$current_path = getcwd(); // Get the current path to where the file is located
$folder = explode("/", $current_path); // Divide the path in parts (aka folders)
$blog = $folder[8]; // The blog's folder is the number 8 on the path

// $root = path without the blog installation folder.
$root = realpath($_SERVER["DOCUMENT_ROOT"]);

// Now I can require any WordPress file
require "$root/$dir/wp-blog-header.php";

// For the current installation
// For example, wp-blog-header.php to get the blog name or
// wp-config.php to access the database.

这使脚本独立。只要文件夹是数字8,该脚本就可以在任何WordPress安装上的任何文件夹上工作。如果安装在子文件夹上,则必须增加数字8。另外请记住,当前路径可能包含更多或更少的文件夹,这意味着必须相应地调整脚本。

注意:这将通过“硬编码”路径上的文件夹位置来工作,只要所有安装具有相同的位置,脚本就可以工作。另一种方法是硬编码。

答案 4 :(得分:1)

如果您可以访问数据库,则需要执行

update_option('wp_dir',dirname(__FILE__));

在文件wp-blog-header.php中。

然后从任何应用程序连接到数据库并使用以下查询检索路径:

select option_value from wp_options where option_name ='wp_dir';

当然,您需要知道数据库名称和WordPress表前缀。

PS:这可能是也可能不是你的解决方案,但它是其中一种方式。

答案 5 :(得分:1)

这是如何从WordPress 中完成(这不是提问者所要求的,但我怀疑很多人会搜索...)

有一个专用函数get_home_path(),它会给你一些类似的东西:

/srv/www/my-site/htdocs/

Other functions for file and content directories(和网络路径)。

答案 6 :(得分:0)

为什么不在wp-config.php中执行以下操作:

$WP_PATH = implode("/", (explode("/", $_SERVER["PHP_SELF"], -1)));

e.g。

$WP_PATH = implode("/", (explode("/", "/one/two/three/index.php", -1)));

将返回“/ one / two / three”和

$WP_PATH = implode("/", (explode("/", "/index.php", -1)));

将返回“”

答案 7 :(得分:0)

$WP_PATH = implode("/", (explode("/", $_SERVER["PHP_SELF"], -4)));

将为您提供确切的WordPress根。

例如,您的根地址是www.myroot.com,而您的WordPress网站位于public_html的WordPress文件夹中,然后wwww.myroot.com/wordpress/将是$ WP_PATH中的结果。在这种情况下,您当前的文件名应该在您的插件根目录中。就像some_plugin是我的插件名称。所以完整的路径将成为:

localhot/wordpress/wp_content/plugins/some_plugin/

localhot/wordpress/wp_content/plugins/some_plugin/myfile.php是我编写此脚本的文件名,会给我/wordpress。这对我有用,因为我想要我的wordpress目录名称。所以寻找这样的内容:

$WP_PATH = implode("/", (explode("/", $_SERVER["PHP_SELF"], -4)));
require_once( $_SERVER['DOCUMENT_ROOT'].$WP_PATH '/wp-load.php');