2012-06-08 153 views
4

有沒有辦法獲得安裝WordPress的路徑?獲取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

數據庫查詢呢? Wordpress將這個變量也保存在它的wp_config中? –

+0

@JureC。你會作爲一個例子的答案嗎?是個好主意。 – user983248

回答

2

根例如:

  • 在/ usr /本地/ PEM /虛擬主機/ 165312 /網絡空間/ httpdocs資料/博客一
  • 在/ usr /本地/ PEM /虛擬主機/ 165312 /網絡空間/ httpdocs資料/博客 - 兩個
  • 在/ usr /本地/ PEM /虛擬主機/ 165312 /網絡空間/ httpdocs資料/一些-博客

下面的例子將在任何的工作博客( 「博客一」,「博客-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將不得不增加。還要記住,當前路徑可能有更多或更少的文件夾,這意味着必須相應地修改腳本。

注意:這將通過對路徑上的文件夾位置進行「硬編碼」工作,並且只要所有安裝具有相同的位置,腳本就可以工作。另一種方式是硬編碼。

5

使用ABSPATH常數:

<?php echo ABSPATH ?> 

這應該打印你的WordPress路徑。

+0

它不會從wordpress以外的工作! – user983248

2

如果你正在嘗試的是其中被稱爲文件所在的當前目錄,然後我會用:

realpath(dirname(__FILE__)) 

很多這依賴於該文件所在。如果是在相同的目錄WordPress安裝那麼它會是這樣的:

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

抱歉,但沒有奏效。我需要用別的東西替換'__FILE__'?因爲當你在你的答案中發佈不起作用。 – user983248

+0

對不起。忘了添加dirname以從路徑中刪除文件名。只是更新了它。你應該按原樣輸入。 – Drahkar

+0

抱歉,只有腳本位於同一文件夾時纔有效。我在尋找一個更靈活的解決方案,可以在任何文件夾上工作,如問題注2中所述。 – user983248

1

如果你能達到的數據庫,你需要做的

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

文件WP-博客頭.PHP。

然後從任何應用程序連接到數據庫,並與下面的查詢檢索路徑:

select option_value from wp_options where option_name ='wp_dir'; 

當然,你需要知道數據庫名和WordPress表前綴。 PS:這可能是也可能不是你的解決方案,但它是其中一種方法。

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環境,無論腳本在哪裏。在使用任何變量(我需要在我的本地主機環境外進行三重檢查)之前,肯定需要進行消毒處理,但我不認爲需要進行嚴格的修改才能成爲實用的通用解決方案。

0

爲什麼不直接做在wp-config.php文件中的以下內容:

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

例如

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

將返回 「/一/二/三」 和

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

將返回 「」

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');