如何在wordpress WP_List_Table中添加自定义下拉过滤器

时间:2014-05-25 20:15:01

标签: wordpress

我扩展了类WP_List_Table以显示自定义数据库表的列表记录。列表是成功的,但我对如何实现下拉过滤器以根据其类别过滤我的自定义db表记录感到生气。

请分享任何代码以添加下拉过滤器以过滤我的自定义数据库表记录。字段名称为cat_id。

1 个答案:

答案 0 :(得分:15)

在这里发布问题后3个小时的斗争后,我探索了课程,找到了解决方案,所以我在这里分享信息。

有一个函数函数extra_tablenav($ which),我用我的函数覆盖该函数,

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'];   
        }

没有在这里完成,我添加了一些javascript来执行下拉列表,

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

它的工作很酷很好,如果有人需要更多的帮助,那么在这里发表评论。

感谢您的时间。