WordPress 使用 paginate_links 创建带分页功能的用户列表


开发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 '<div id="pagination" class="clearfix">';
    echo '<span class="pages">Pages:</span>';

    //从第一页和查询参数页中选一个最大的作为当前页数
    $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 '</div>';
}

利用同样的方法,我们也可以实现 WordPress 分类标签列表分页功能,甚至在 WordPress 中自定义数据表的分页功能,也可以通过 paginate_links 函数实现。或者如果你比较熟悉用自己写的或者其他分页函数库,也是一样的原理和方法。

  • 分享:
评论
还没有评论
    发表评论 说点什么