कैसे एक सूचकांक जोड़ें प्लगइन डेटाबेस तालिका में


10

मैंने एक प्लगइन के लिए कुछ अतिरिक्त तालिकाओं का निर्माण किया है जो मैं विकसित कर रहा हूं और इन तालिकाओं में अनुक्रमित जोड़ने की आवश्यकता है।

ऐसा करने के लिए वर्डप्रेस तरीका क्या है?

का उपयोग कर dbDelta()काम नहीं कर रहा है, और मैं लॉग में कोई त्रुटि नहीं देख रहा हूँ।

जवाबों:


4

आप डेटा परिभाषा विवरण, जैसे wpdb :: query () के साथ मनमाने ढंग से SQL कथनों को निष्पादित कर सकते हैं

function
create_index ()
{
    global $wpdb ;

    $sql = "CREATE INDEX my_index ON {$wpdb->prefix}my_table (my_column)" ;

    $wpdb->query ($sql) ;

    return ;
}

नोट: क्योंकि मनमाने ढंग से एसक्यूएल $wpdb->query()निष्पादित कर सकते हैं , यदि आप जिस स्टेटमेंट से गुजरते हैं , उसमें कोई भी उपयोगकर्ता इनपुट शामिल है, तो आपको एसक्यूएल इंजेक्शन हमलों से बचाने के लिए wpdb :: तैयार () का उपयोग करना चाहिए ।

लेकिन यह सवाल उठाता है: आपने अपना प्लगइन-विशिष्ट टेबल कैसे बनाया? "मैन्युअल रूप से" या प्रोग्रामिक रूप से? यदि प्रोग्रामेटिक रूप से, आपने उपयोग नहीं किया $wpdb->query()? यदि आपने इसे "मैन्युअल रूप से" किया है, तो आपको वास्तव में प्लगइन सक्रियण पर तालिकाओं (और उनके अनुक्रमित) को बनाना चाहिए।

निजी तालिकाओं जैसे काम करने के लिए प्लगइन सक्रियण (और / या निष्क्रिय करने और अनइंस्टॉल) में हुक करने के लिए इस अन्य डब्ल्यूपीएसई प्रश्न का उत्कृष्ट उत्तर देखें ।


इस प्रश्न का उत्तर देने के लिए धन्यवाद, भले ही यह 5 महीने पुराना हो। मैं यह कर रहा था, लेकिन यकीन नहीं था कि यह "सही तरीका" था। अगली बार जब मैं ऐसा करने की कोशिश करूंगा तो एक बड़ी मदद होगी।
मिल्क

@ मेरी खुशी। मुझे लगा कि आप या तो पहले से ही अपनी समस्या का समाधान कर चुके हैं या छोड़ दिया है :-) मैंने इसका जवाब दिया (यहां तक ​​कि आपके कहने के बाद भी 5mos), दूसरों की मदद करने के लिए जो एक ही समस्या है और WPSE की खोज करें और अपने प्रश्न पर आएं।
पॉल 'स्पैरो हॉक' बीरॉन

3

एक प्राथमिक कुंजी के शीर्ष पर dbDelta का उपयोग करते हुए, आप अन्य कॉलम के लिए एक इंडेक्स बनाने के लिए शब्द को शामिल कर सकते हैं:

आपको इसके पर्यायवाची INDEX के बजाय कुंजी शब्द कुंजी का उपयोग करना चाहिए और आपको कम से कम एक कुंजी शामिल करनी होगी।

कोर में schema.php से उदाहरण:

CREATE TABLE $wpdb->termmeta (
  meta_id bigint(20) unsigned NOT NULL auto_increment,
  term_id bigint(20) unsigned NOT NULL default '0',
  meta_key varchar(255) default NULL,
  meta_value longtext,
  PRIMARY KEY  (meta_id),
  KEY term_id (term_id),
  KEY meta_key (meta_key($max_index_length))
) $charset_collate;

स्रोत: कोडेक्स - प्लगइन्स के साथ टेबल्स बनाना

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.