2011-06-02 12 views
6

मैं plugin पर wordpress में कुछ समय के लिए विकास कर रहा हूं, लेकिन एक समस्या मुझे परेशान करती रहती है। मैं एक एक्सेल फ़ाइल के रूप में डेटाबेस-टेबल निर्यात करना चाहता हूं और इसके लिए मुझे अपनी प्लगइन निर्देशिका में फ़ाइल से वैश्विक $wpdb->variable तक पहुंच की आवश्यकता है।

मुझे एक ब्लॉग प्रविष्टि मिली जो बताती है कि मुझे कौन से वर्ग शामिल करना चाहिए, लेकिन यह काम नहीं करता है (लिंक नीचे है)। जैसा कि आप देख सकते हैं, मैं var_dump करता हूं, लेकिन यह उस बिंदु तक कभी नहीं पहुंचता है। यदि मैं कोड के बाहर wp-config और wp-load शामिल करता हूं, तो डंप returns NULL, इसलिए मुझे लगता है कि आयात के साथ कोई समस्या है।

वैसे भी, मैं उम्मीद कर रहा था कि कोई इस समस्या के साथ मेरी मदद कर सकता है। मुझे जरूरी नहीं कि मेरे दृष्टिकोण के लिए एक फिक्स की ज़रूरत है, मुझे बस WordPress में एक्सेल करने के लिए डेटा की एक सरणी (मेरे डीबी से लाया गया) निर्यात करने का एक तरीका चाहिए। किसी भी सहायता की सराहना की जाएगी। अग्रिम में धन्यवाद।

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

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(); 

संपादित करें: मैं wp-config शामिल नहीं कर सकते, यह लगातार त्रुटियों देता है। मुझे पता है कि बग कहाँ हो रहा है, मुझे बस एक काम खोजने की जरूरत है। जब wp-settings पृष्ठ पर देख (जो WP-config से शामिल है) आप कोड की इस पंक्ति मिलेगा:

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

इस जगह है जहाँ एक बग नहीं है। मुझे नहीं पता कि मुझे इस बग के आसपास कैसे काम करना चाहिए।

संपादित 2: समस्या हल हो गई। फ़ाइल को शामिल करते समय, मैंने wp-config को एक से अधिक बार शामिल किया (भले ही मैंने कहा कि इसे केवल एक बार शामिल किया जाना चाहिए)। मैंने निम्नलिखित कोड का उपयोग करके समस्या हल की।

global $wpdb, $table_prefix; 

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

वर्डप्रेस का कौन सा संस्करण आप उपयोग कर रहे हैं? मेरे पास केवल यह पंक्ति है: 'requ_once (ABSPATH।' Wp-settings.php '); ' –

+0

' requ_once (ABSPATH। 'Wp-settings.php'); ' wp-config फ़ाइल में है। आपको wp-settings.php में बग किए गए लाइनों की तलाश करनी चाहिए :) (और मैं वर्डप्रेस बीटीडब्ल्यू के नवीनतम संस्करण का उपयोग कर रहा हूं)। –

+0

आपको क्या सटीक त्रुटि संदेश मिल रहे हैं? –

उत्तर

9

यदि आप वर्डप्रेस प्लगइन बना रहे हैं, तो आपको उन फ़ाइलों को मैन्युअल रूप से शामिल करने की आवश्यकता नहीं है।

यदि आप अपनी तालिका निर्यात करना चाहते हैं, तो आप इसके लिए कोई फ़ंक्शन/कक्षा क्यों नहीं बनाते हैं और $wpdb को पास करते हैं (यदि आपको इसकी आवश्यकता है)। आप सामान्य MySQLi -class (PHP से) का उपयोग अपने MySQL डेटाबेस तक पहुंच सकते हैं।


आप बस संग्रहीत प्रवेश-मूल्यों जिसके द्वारा वर्डप्रेस उपयोग किया जाता है के साथ MySQL डाटाबेस उपयोग करना चाहते हैं, तो आप वर्डप्रेस रूट निर्देशिका से wp_config -file शामिल कर सकते हैं।

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

उसके बाद आप MySQLi-वर्ग का एक उदाहरण है (जैसा कि ऊपर उल्लेख) जो आप अपने डेटाबेस का उपयोग करने के लिए उपयोग कर सकते हैं: यह कुछ (समझा स्वयं) जो आप अपने डेटाबेस से कनेक्ट करने के लिए इस्तेमाल कर सकते हैं वैश्विक फ़ील्ड होते हैं ।

मुझे यकीन नहीं है कि यह जाने का सही तरीका है लेकिन यह निश्चित रूप से काम करता है।


डीबग वर्डप्रेस के लिए

(अगर कुछ काम नहीं करता है और वहाँ कोई त्रुटि-संदेश है) आप wp-config.php -file में डिबगिंग को सक्रिय करना चाहिए:, इसके अलावा

/** 
* 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); 

आप परीक्षण कर रहे हैं, तो आपके इस shoul

; 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 

हालांकि: स्थानीय सर्वर पर PHP-स्क्रिप्ट, आप अपने php.ini -file में on को display_error कर देना चाहिए डी केवल आपके स्थानीय परीक्षण-सर्वर पर किया जा सकता है, उत्पादक परिदृश्य में नहीं।

+1

मुझे उन्हें मैन्युअल रूप से शामिल करना होगा, क्योंकि अगर मैं एक्सेल डाउनलोड ट्रिगर करना चाहता हूं, तो मैं इसे WordPress के admin.php के भीतर से नहीं कर सकता (हेडर जानकारी पास नहीं की जा सकती है, मुझे क्यों न पूछें)। तो मैं अपनी प्लगइन-निर्देशिका से एक php-file को कॉल करता हूं, लेकिन यह $ wpdb चर या किसी अन्य चर का उपयोग नहीं कर सकता है, मुझे उस मामले के लिए WordPress डीबी तक पहुंचने की आवश्यकता होगी। –

+0

हेडर जानकारी नहीं भेजी जा सकती है क्योंकि कुछ पहले से मुद्रित होने के बाद आप हेडर बदलते हैं। आपको (जैसे मैंने कहा) एक नई फाइल में एक नई कक्षा बनाना चाहिए और इसे '$ wpdb'-ऑब्जेक्ट पास करना चाहिए। –

+0

और मुझे उस वर्ग में $ wpdb-variable को कैसे पास करना चाहिए? क्योंकि जिस तरह से मैं फ़ाइल को कॉल कर रहा हूं, अब एक और php-page पर रीडायरेक्ट कर रहा है। (नीचे दिखाया गया एचटीएमएल)। Save as excel

संबंधित मुद्दे