有没有办法获得安装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";
,只要文件位于同一文件夹中,它就会起作用,但在我的情况下,文件将是有时在不同的文件夹中。
答案 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)
根示例:
以下示例适用于任何博客(“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/
答案 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');