2011-06-02 25 views
6

Ben wordpress bir plugin üzerinde bir süredir gelişmekte oldum, ama bir sorun canımı sıkıyor tutar. Ben bir excel dosyası olarak bir veritabanı tablo vermek istediğiniz ve bunun benim eklenti dizininde bir dosyadan küresel $wpdb->variable erişmesi gerekir. (Bağlantı altındadır)

Ben içermelidir hangi dersleri açıklayan bir blog girişi bulundu, ancak bu çalışmıyor. Gördüğünüz gibi, bir var_dump yapıyorum ama bu noktaya asla ulaşmaz. i wp-config ve kod, dökümü returns NULL üzerinden wp-load arasında içerir bırakın, bu yüzden tahmin ediyorum Eğer ithalat ile ilgili bir sorun yoktur.

Neyse, birisi bu sorunu bana yardım edeceğini umuyordum. Benim yaklaşımım için mutlaka bir düzeltmeye ihtiyacım yok, sadece bir dizi veriyi (db'den aldığım) wordpress'te excel'e aktarmanın bir yoluna ihtiyacım var. Herhangi bir yardım takdir edilecektir. Şimdiden teşekkürler.


include_once('../../../wp-config.php'); include_once('../../../wp-load.php'); include_once('../../../wp-includes/wp-db.php'); var_dump($wpdb); $filter = get_where_clause(); $order = get_order_by_clause(); $data = $wpdb->get_results("SELECT * FROM " . $table_prefix . "team_data" . $filter . $order, ARRAY_A); $result = array(); 

http://www.notesbit.com/index.php/web-mysql/web-scripts/standalone-access-the-wordpress-database-using-wpdb/

DÜZENLEME:
Ben wp-config içeremez, bu sabit hatalar veriyor. Böceğin nerede olduğunu biliyorum, sadece bir iş bulmalıyım. (Wp-config dahil edildiği) wp-settings sayfasına bakan bu kod satırını bulabilirsiniz:

foreach (wp_get_active_and_valid_plugins() as $plugin) 
    include_once($plugin); 
unset($plugin); 

bir hata var yerdir. Bu böcek etrafında nasıl çalışmam gerektiğini bilmiyorum.

EDIT 2: Sorun çözüldü. Dosyayı eklerken, bir kereden fazla wp-config'u ekledim (yalnızca bir kez eklenmesi gerektiğini belirttiğim halde). Aşağıdaki kodu kullanarak sorunu çözdüm. Bir WordPress eklentisi oluşturuyorsanız

global $wpdb, $table_prefix; 

if(!isset($wpdb)) 
{ 
    require_once('../../../../wp-config.php'); 
    require_once('../../../../wp-includes/wp-db.php'); 
} 
+1

Hangi WordPress sürümünü kullanıyorsunuz? Sadece bu satır var: 'require_once (ABSPATH. 'Wp-settings.php');' –

+0

'require_once (ABSPATH.' Wp-settings.php ');' wp-config dosyasında. wp-settings.php :) 'deki buğulu satırları aramalısınız (ve wordpress btw'nin en son sürümünü kullanıyorum). –

+0

Tam olarak hangi hata mesajlarını alıyorsunuz? –

cevap

9

, el o dosyaları dahil etmek gerekmez.

Tablonuzu dışa aktarmak isterseniz, bunun için bir işlev/sınıf oluşturmuyorsunuz ve ona (gerekiyorsa) $wpdb kodunu aktarmıyorsunuz. MySQL Veritabanınıza erişmek için normal MySQLi-sınıf (PHP'den) kullanabilirsiniz. sadece WordPress tarafından kullanılan saklanan giriş-değerleri ile MySQL veritabanı erişmek istiyorsanız


, WordPress kök dizinden wp_config -File içerebilir. Eğer veritabanı erişmek için kullanabileceğiniz (yukarıda belirtildiği gibi) Eğer MySQLi-sınıfın bir örneğini sahip Bundan sonra

include "WP-ROOT-PATH/wp-config.php"; 
$db = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); 
// Test the connection: 
if (mysqli_connect_errno()){ 
    // Connection Error 
    exit("Couldn't connect to the database: ".mysqli_connect_error()); 
} 

: Bazı (açıklayan kendini) Eğer veritabanına bağlanmak için kullanabilirsiniz küresel alanlar vardır . Bu gitmek için mükemmel bir yoldur ama emin eserler eğer

Ben ancak emin değilim.

ayıklama WordPress için

Eğer wp-config.php -File içinde hata ayıklama aktif hale getirmelisiniz (bir şey çalışmak ve etmezse hiçbir Hata-Mesaj yoktur):

/** 
* For developers: WordPress debugging mode. 
* 
* Change this to true to enable the display of notices during development. 
* It is strongly recommended that plugin and theme developers use WP_DEBUG 
* in their development environments. 
*/ 
define('WP_DEBUG', true); 

Ayrıca, test ediyorsanız sizin bir yerel sunucuda PHP Script, size php.ini -File içinde on için display_error açmalısınız:

; This directive controls whether or not and where PHP will output errors, 
; notices and warnings too. Error output is very useful during development, but 
; it could be very dangerous in production environments. 
display_errors = On 

Ancak bu shoul d sadece yerel test sunucunuzda üretken bir senaryoda yapılmamalıdır.

+1

Onları elle eklemek zorundayım çünkü bir excel yüklemesini tetiklemek istiyorsam, bunu wordpress'in admin.php dosyasından yapamıyorum (başlık bilgisi iletilemiyor, bana neden sorma). Bu yüzden, eklenti dizinimden bir php dosyası çağırıyorum, ancak bu, $ wpdb değişkenine veya bu konu için wordpress db'ye erişmem gereken herhangi bir başka değişkene erişemiyor. –

+0

Başlık bilgileri zaten bir şey yazdırıldıktan sonra değiştirdiğiniz için gönderilemiyor. Yeni bir dosyada (dediğim gibi) yeni bir sınıf oluşturmalı ve bunu $ wpdb' Nesnesini geçirmelisiniz. –

+0

Ve $ wpdb değişkenini bu sınıfa nasıl geçirmeliyim? çünkü şimdi dosyayı aradığım yol başka bir php sayfasına yönlendiriliyor. (Aşağıda gösterilen html). Save as excel

İlgili konular