Получение имени базы данных WordPress / имени пользователя / пароля с помощью PHP - PullRequest
6 голосов
/ 28 февраля 2011

Я пишу плагин WordPress и мне нужно прочитать имя базы данных, имя пользователя и пароль (для того, чтобы сделать дамп SQL).Возможно ли это?

Спасибо -

Ответы [ 2 ]

14 голосов
/ 28 февраля 2011

Да, они определены в wp-config.php

  1. Имя базы данных: DB_NAME
  2. Пользователь базы данных: DB_USER
  3. Пароль базы данных: DB_PASSWORD
  4. Хост базы данных: DB_HOST

Они определены. До встречи wp-config.php в корневом каталоге Wordpress

3 голосов
/ 09 мая 2013

В Wordpress есть несколько довольно глупых вещей, происходящих по всему OO-коду, с которыми я сталкиваюсь не впервые, когда мы углубляемся во внутренности с каждым последующим проектом в Moxune . См. WP_User :: __set не сохраняет настраиваемые поля, поскольку утверждает .

Глупость, на которую я здесь ссылаюсь, конечно, заключается в том, что что-то вроде префикса таблицы, aka wpdb::prefix, является public переменной-членом, однако такие вещи, как dbname, dbpassword и dbhost, являются protected и public методы доступа отсутствуют.

Я уверен, что один из основных разработчиков Wordpress попытается найти какое-то обоснование для этого, но в то же время он может также использовать несколько хороших 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 ) установите global в том же ключе, что и wpdb.

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

Оттуда, просто используйте $sanedb в вашем плагине вместо $wpdb.

И, наконец, получение имени базы данных и др.

$sanedb->getDbName();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...