开发WordPress主题的时候,很多朋友喜欢做一个用户列表,来增加网站用户的活跃度,创建用户列表很简单,直接用get_users功能就可以实现,可是当用户数量非常大的时候,所有用户在一个页面显示出来会造成这个页面打开的速度非常慢,这时候为用户列表增加一个分页功能就非常有必要了,很多朋友在实现分页功能的时候遇到了问题。今天我们接着创建用户列表分页的例子,来介绍一下 WordPress 的 paginate_links 函数。
首先我们需要查询并显示用户列表,顺便把分页需要的数据准备好
$number = 10; //每页显示的数量 $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; //当前第几页 $offset = ($paged - 1) * $number; //偏移量 $users = get_users(); //获取所有用户 $query = get_users('&offset=".$offset."&number=".$number); //当前页面查询到的用户 $total_users = count($users); //用户总数 $total_query = count($query); //总查询数量 $total_pages = intval($total_users / $number) + 1; //总页数 foreach($query as $q) { //列出用户 }
有了上面的数据,我们使用 paginate_links 功能显示分页
分页的原理就不需要多说了,需要的数据无非就是一个每页显示的数据量,总数据量和当前页数,这些数据我们在上面已经准备好了,我们只需要把这些参数传给 paginate_links 就可以了,当然,如果你非要写原始的 SQL 语句来查询,直接使用 wpdb 也是可以实现的。
if ($total_users > $total_query) { echo "'; echo 'Pages:'; //从第一页和查询参数页中选一个最大的作为当前页数 $current_page = max(1, get_query_var('paged')); //显示分页 echo paginate_links(array( 'base' => get_pagenum_link(1) . '%_%', 'format' => 'page/%#%/', 'current' => $current_page, 'total' => $total_pages, 'prev_next' => false, 'type' => 'list', )); echo ''; }
利用同样的方法,我们也可以实现 WordPress 分类标签列表分页功能,甚至在 WordPress 中自定义数据表的分页功能,也可以通过 paginate_links 函数实现。或者如果你比较熟悉用自己写的或者其他分页函数库,也是一样的原理和方法。