2014-05-25 10 views
7

I erweiterte Klasse WP_List_Table, um Auflistungsdatensätze der benutzerdefinierten Datenbanktabelle anzuzeigen. Listing ist erfolgreich, aber ich bin verrückt nach einem Drop-down-Filter zu implementieren, um meine benutzerdefinierten db-Tabellensätze nach Kategorien zu filtern.So fügen Sie einen benutzerdefinierten Dropdown-Filter in WordPress hinzu WP_List_Table

Bitte teilen Sie jeden Code zum Hinzufügen von Dropdown-Filter, um meine benutzerdefinierte Datenbanktabelleneinträge zu filtern. Feldname ist cat_id.

+0

Wenn irgendein Experte diese Frage unvollständig oder irgendein Frage des Fragebogens dann bitte informiert, erkläre ich mehr je nach Anforderungen. aber bitte lösung einige sehr schnell. Danke –

+1

Bitte, Mian, füge die Lösung als *** Antwort *** in die Box unten hinzu. Nimm die [Tour] (http://stackoverflow.com/tour) um mehr zu wissen, danke! Oh, die Live-Methode ist veraltet, siehe jQuery-Dokumentation. – brasofilo

Antwort

12

nach dem Kampf von 3 Stunden nach dem Posten der Frage hier, erkunde ich die Klasse und fand die Lösung, also teile ich Informationen hier.

Es gibt eine Funktion Funktion extra_tablenav ($) eingelegt, überschreiben ich diese Funktion mit meiner Funktion,

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 

    } 
} 

und dann sprang ich in Funktion prepare_items() und eine Zeile nach Abfrage-String hinzugefügt,

if($_GET['cat-filter'] > 0){ 
      $query = $query . ' where cat_id=' . $_GET['cat-filter']; 
     } 

hier nicht fertig, ich ein paar Zeilen JavaScript hinzugefügt nach unten auszuführen fallen,

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

und es funktioniert cool und gut, wenn jemand mehr Hilfe brauchen, dann kommentieren Sie hier.

Vielen Dank für die Zeit.

+0

Entschuldigung für die Verwendung von Live-Methode von jQuery, sollten Sie empfohlenen Ansatz wie oben in Kommentar von brasofilo erwähnt verwenden. –

+0

Wie machst du das mit der Filtertaste? –

+0

Stellen Sie sicher, dass Sie alles, was direkt von '$ _GET' geht, in eine Abfrage in der 'mysql_real_escape_string'-Funktion einbinden, andernfalls lassen Sie sich für sql injection offen. – jsonfry

Verwandte Themen