2011-02-28 7 views

Répondre

13

Oui, ils sont définis dans wp-config.php

  1. Base de données Nom: DB_NAME
  2. Base de données utilisateur: DB_USER
  3. mot de passe de la base de données: DB_PASSWORD
  4. Hôte de base de données: DB_HOST

Ils sont définis. Voyez-vous wp-config.php dans le répertoire racine de Wordpress

+3

Si c'est un plugin que vous allez rendre disponible publiquement ou soumettre au référentiel de plugin WP, je suggérerais non seulement de coder en dur une recherche de wp-config.php dans la racine mais aussi de chercher un répertoire de wp-config au-dessus de la racine [WordPress wp-config Documentation de sécurité] (http://codex.wordpress.org/Hardening_WordPress#Securing_wp-config.php) Voyez autour de la ligne 26 de wp-load.php comment ils recherchent et incluent le wp- fichier config.php –

3

Wordpress a quelque chose d'assez maladroit qui se passe tout au long de son code OO, ce n'est pas le premier que j'ai rencontré comme nous creusons plus profondément dans les internes avec chaque projet successif au Moxune. Voir WP_User::__set doesn't persist custom fields as it claims.

Le goofiness Je me réfère ici est bien sûr que quelque chose comme le préfixe de table, alias wpdb::prefix est une variable membre public, mais des choses comme dbname, dbpassword et dbhost sont protected et il n'y a pas public méthodes accesseurs. Je suis sûr que l'un des développeurs principaux de Wordpress essaiera d'argumenter une certaine logique pour cela, mais en attendant peut aussi bien utiliser quelques bons OO pour faire face. Ma suggestion, un décorateur.

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;  } 
} 

Ensuite, au sommet de votre code plug-in (functions.php) d'installation d'un global dans la même veine à wpdb.

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

À partir de là, il suffit d'utiliser $sanedb au sein de votre plug-in au lieu de $wpdb.

Enfin, obtenir le nom de la base de données et al.

$sanedb->getDbName(); 
+0

Pour obtenir le nom d'utilisateur db, ajoutez ceci: public function getDbUser() {return $ this -> _ oDb-> dbuser; } – Amit

Questions connexes