2011-02-28 219 views
5

我在寫一個WordPress插件,需要讀取數據庫名稱,用戶名和密碼(爲了執行sql轉儲)。這可能嗎?使用PHP獲取WordPress數據庫名稱/用戶名/密碼

Thanks-

+0

爲什麼不只是重新使用當前的數據庫連接? – 2011-02-28 16:50:25

+0

@ Pekka-我在做一個php系統()調用mysqldump-我需要傳遞這些變量。 – Yarin 2011-02-28 17:20:39

回答

13

是的,他們在wp-config.php

  1. 數據庫名稱的定義:DB_NAME
  2. 數據庫用戶:DB_USER
  3. 數據庫密碼:DB_PASSWORD
  4. 數據庫主機:DB_HOST

他們是定義。在Wordpress的根目錄中看到wp-config.php

+3

如果這是一個插件,您將公開提供或提交給WP插件庫我建議不僅僅是在根目錄下查找wp-config.php,而且還要查找wp-config一個目錄在根[WordPress的wp-config安全文檔](http://codex.wordpress.org/Hardening_WordPress#Securing_wp-config.php)上方查看wp-load.php的第26行,查看它們的方式,並將wp- config.php文件 – 2011-03-01 16:43:51

3

Wordpress在整個OO代碼中都有一些相當愚蠢的事情發生,這不是我們遇到的第一個,因爲我們深入瞭解內部後續項目Moxune。見WP_User::__set doesn't persist custom fields as it claims

我指的當然這裏的goofiness是像表前綴,又名wpdb::prefixpublic成員變量,但是之類的東西dbnamedbpassworddbhostprotected並沒有public訪問方法。

我相信Wordpress的核心開發者之一會試圖爲它辯解一些理由,但同時也可以使用一些很好的'ol OO來應付。我的建議,裝飾者。

class SaneDb 
{ 
    private $_oDb; 

    public function __construct(wpdb $oDb) 
    { 
     $this->_oDb = $oDb; 
    } 

    public function __get($sField) 
    { 
     if($sField != '_oDb') 
      return $this->_oDb->$sField; 
    } 

    public function __set($sField, $mValue) 
    { 
     if($sField != '_oDb') 
      $this->_oDb->$sField = $mValue; 
    } 

    public function __call($sMethod, array $aArgs) 
    { 
     return call_user_func_array(array($this->_oDb, $sMethod), $aArgs); 
    } 

    public function getDbName() { return $this->_oDb->dbname;  } 
    public function getDbPass() { return $this->_oDb->dbpassword; } 
    public function getDbHost() { return $this->_oDb->dbhost;  } 
} 

然後頂上以相似的口吻你的插件代碼(的functions.php)設置一個globalwpdb

global $sanedb; 
$sanedb = new SaneDb($wpdb); 

從那裏,只是用$sanedb你的插件,而不是$wpdb內。

最後,查看數據庫名稱等。

$sanedb->getDbName(); 
+0

要獲取數據庫用戶名,請添加以下內容:public function getDbUser(){return $ this - > _ oDb-> dbuser; } – Amit 2015-12-28 16:16:55

相關問題