前面介绍了WP_List_Table这个类的简单使用,下面进一步学习下它的用法。由于前面大量讲解了WP_List_Table的方法功能,所以没有结合数据表说明,今天就用一个自定义数据表为例,讲一下WP_List_Table在WordPress后台添加一个对自定义数据表的数据进行管理的列表功能。如果对WP_List_Table不清楚的,请看上一篇文章。
先看看翻页功能:
效果还行,下面看实现步骤。
自定义数据表结构如下:
这里随便建了个数据表,不用纠结为什么我的定义这么乱。
然后使用WP_List_Table的方法,设置对应的列表标题,已经列内容处理。与之前的教程相比,我们这里在WP_List_Table调用display方法时处理数据表查询动作。前面已经说了,WP_List_Table调用display方法将会执行prepare_items方法,也就是说我们的数据表操作在prepare_items方法中进行。
复制
function prepare_items() {
global $wpdb; //This is used only if making any database queries
$sql="SELECT COUNT(*) as numbers FROM `zhongyidc`";
$results = $wpdb->get_results($sql);
$total_items =(int)$results[0]->numbers;
$per_page = 5;
$start=0;
$querystr = "SELECT * FROM `zhongyidc`";
if($_GET['orderby'] && $_GET['order']){
$querystr .=" order by ".$_GET['orderby']." ".$_GET['order'];
}
if($_GET['paged']){
$start=((int)$_GET['paged']-1)*$per_page;
}
$querystr .= " limit ".$start.",".$per_page ;
$results = $wpdb->get_results($querystr, ARRAY_A);
$data = $results;
$columns = $this->get_columns();
$hidden = array();
$sortable = $this->get_sortable_columns();
$this->_column_headers = array($columns, $hidden, $sortable);
$this->process_bulk_action();
$current_page = $this->get_pagenum();
$this->items = $data;
$this->set_pagination_args( array(
'total_items' => $total_items,
'per_page' => $per_page,
'total_pages' => ceil($total_items/$per_page)
) );
}这里首先对整个数据表中记录总数进行查询,方便后面使用记录数进行分页操作。
然后根据get请求参数构造mysql查询命令,用来获取数据。在这里我没有严格检查get参数,所以这段代码是有bug的,使用时需注意,别问我为什么不写完整,因为我懒呀!
再说一下这些get参数,paged是用来翻页的,orderby是排序指定字段用的,order是排序方式,升还是降。
id段升序排列:
id段降序排列:









评论 (0)