Bir WordPress eklentisi yazıyorum ve veritabanı adını, kullanıcı adını ve şifresini (bir sql dökümü yapmak için) okumanız gerekiyor. Mümkün mü?PHP ile WordPress veritabanı adı/kullanıcı adı/şifre almak
Thanks-
Bir WordPress eklentisi yazıyorum ve veritabanı adını, kullanıcı adını ve şifresini (bir sql dökümü yapmak için) okumanız gerekiyor. Mümkün mü?PHP ile WordPress veritabanı adı/kullanıcı adı/şifre almak
Thanks-
Evet, onlar wp-config.php
Bunlar tanımlanıyor. Wordpress'in kök dizinine bakın wp-config.php
Bu, herkese açık olarak kullanıma sunulacağınız veya WP eklenti deposuna göndereceğiniz bir eklenti ise, sadece root'da wp-config.php dosyasına bir kod yazmanın yanı sıra wp-config dizinine bakmanızı da tavsiye ederim root'un yukarısında [WordPress wp-config Güvenlik Belgeleri] (http://codex.wordpress.org/Hardening_WordPress#Securing_wp-config.php) wp-load.php'nin 26 nolu hattının etrafına nasıl baktıklarını görün ve wp- config.php dosyası –
WordPress'in OO kodu boyunca bazı oldukça rahatsız edici şeyler oluyor. Bu, karşılaştığım ilk konu değil, her biriyle internette daha derinlere iniyoruz. Moxune numaralı proje. WP_User::__set doesn't persist custom fields as it claims'a bakın.
Burada tabii atıfta Goofiness şeyler dbname
, dbpassword
ve dbhost
gibi protected
ve hiçbir public
erişimci yöntemleri vardır ancak tablo öneki gibi bir şey, nam wpdb::prefix
, bir public
üye değişken olmasıdır.
Eminim Wordpress çekirdek devlerinden biri bunun için bir gerekçe göstermeye çalışacağından eminim, ama bu arada bazı iyi 'ol OO'yu başa çıkabilir. Benim önerim, bir dekoratör.
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; }
}
Sonra wpdb
benzer ven içinde eklenti koduna (functions.php'ın) kurulum bir global
tepesinde.
global $sanedb;
$sanedb = new SaneDb($wpdb);
Oradan, sadece Eklentinizde yerine $wpdb
içinde $sanedb
kullanın. Son olarak, veritabanı adı ve diğerlerine sahip olmak.
$sanedb->getDbName();
db kullanıcı adını almak için şunu ekleyin: public function getDbUser() {return $ this -> _ oDb-> dbuser; } – Amit
Neden sadece geçerli veritabanı bağlantısını yeniden kullanmıyoruz? –
@ Pekka - Bir php sistemi() çağrısı mysqldump yapıyorum - Bu değişkenleri geçmek gerekiyor. – Yarin