2014-05-25 4 views
7

में कस्टम ड्रॉप डाउन फ़िल्टर को कैसे जोड़ें कस्टम डेटाबेस तालिका के लिस्टिंग रिकॉर्ड प्रदर्शित करने के लिए मैंने WP_List_Table कक्षा बढ़ा दी। लिस्टिंग सफल है लेकिन मैं अपनी श्रेणियों के अनुसार अपने कस्टम डीबी टेबल रिकॉर्ड को फ़िल्टर करने के लिए ड्रॉप-डाउन फ़िल्टर को कार्यान्वित करने के बारे में पागल हो रहा हूं।वर्डप्रेस WP_List_Table

कृपया मेरे कस्टम डेटाबेस तालिका रिकॉर्ड फ़िल्टर करने के लिए ड्रॉप-डाउन फ़िल्टर जोड़ने के लिए कोई भी कोड साझा करें। फील्ड नाम cat_id है।

+0

यदि कोई विशेषज्ञ इस प्रश्न को अपूर्ण या किसी भी प्रश्नावली के मुद्दे को महसूस करता है तो कृपया सूचित करें, मैं आवश्यकताओं के अनुसार और अधिक समझाऊंगा। लेकिन कृपया कुछ वास्तव में जल्दी समाधान की आवश्यकता है। धन्यवाद –

+1

कृपया, मियान, बॉक्स बोले में एक *** उत्तर *** के रूप में soltuion जोड़ें। अधिक जानने के लिए [टूर] (http://stackoverflow.com/tour) लें, धन्यवाद! ओह, 'लाइव' विधि बहिष्कृत है, jQuery दस्तावेज़ देखें। – brasofilo

उत्तर

12

यहां प्रश्न पोस्ट करने के 3 घंटे बाद संघर्ष के बाद, मैंने कक्षा की खोज की, और समाधान मिला, इसलिए मैं यहां जानकारी साझा कर रहा हूं।

एक समारोह समारोह extra_tablenav (जो $), मैं अपने कार्य के साथ कि समारोह को ओवरराइड

function extra_tablenav($which) { 
    global $wpdb, $testiURL, $tablename, $tablet; 
    $move_on_url = '&cat-filter='; 
    if ($which == "top"){ 
     ?> 
     <div class="alignleft actions bulkactions"> 
     <?php 
     $cats = $wpdb->get_results('select * from '.$tablename.' order by title asc', ARRAY_A); 
     if($cats){ 
      ?> 
      <select name="cat-filter" class="ewc-filter-cat"> 
       <option value="">Filter by Category</option> 
       <?php 
       foreach($cats as $cat){ 
        $selected = ''; 
        if($_GET['cat-filter'] == $cat['id']){ 
         $selected = ' selected = "selected"'; 
        } 
        $has_testis = false; 
        $chk_testis = $wpdb->get_row("select id from ".$tablet." where banner_id=".$cat['id'], ARRAY_A); 
        if($chk_testis['id'] > 0){ 
       ?> 
       <option value="<?php echo $move_on_url . $cat['id']; ?>" <?php echo $selected; ?>><?php echo $cat['title']; ?></option> 
       <?php 
        } 
       } 
       ?> 
      </select> 
      <?php 
     } 
     ?> 
     </div> 
     <?php 
    } 
    if ($which == "bottom"){ 
     //The code that goes after the table is there 

    } 
} 

नहीं है और फिर मैं समारोह prepare_items में कूद() और क्वेरी स्ट्रिंग के बाद एक लाइन जोड़ा,
if($_GET['cat-filter'] > 0){ 
      $query = $query . ' where cat_id=' . $_GET['cat-filter']; 
     } 

नहीं यहाँ समाप्त हो गया है, मैं ड्रॉप डाउन निष्पादित करने के लिए जावास्क्रिप्ट की कुछ पंक्तियाँ कहा,

$('.ewc-filter-cat').live('change', function(){ 
    var catFilter = $(this).val(); 
    if(catFilter != ''){ 
     document.location.href = 'admin.php?page=ewc-testimonial'+catFilter;  
    } 
}); 

और यह कूल और जुर्माना काम कर रहा है, अगर किसी को और मदद की ज़रूरत है तो यहां टिप्पणी करें।

समय के लिए धन्यवाद।

+0

jQuery की लाइव विधि का उपयोग करने के लिए खेद है, आपको ब्रासोफिलो द्वारा उपरोक्त टिप्पणी में उल्लिखित अनुशंसित दृष्टिकोण का उपयोग करना चाहिए। –

+0

फ़िल्टर बटन के साथ आप इसे कैसे करते हैं? –

+0

सुनिश्चित करें कि आप 'mysql_real_escape_string' फ़ंक्शन में किसी क्वेरी में सीधे $ $ _GET' से जा रहे कुछ भी लपेटें, अन्यथा आप स्वयं को एसक्यूएल इंजेक्शन के लिए खोल दें। – jsonfry