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

文 / @WordPress主题

开发WordPress主题的经历

作为一个拥有多年WordPress主题开发经验的小本本,我在开发过程中发现很多朋友都喜欢做一个用户列表页面,既可以增加网站用户的活跃度,又可以方便用户查找其他用户,同时也可以展示出网站的多样性与活力。但当用户数量非常大的时候,所有用户在一个页面显示出来会造成这个页面打开的速度非常慢,这时候为用户列表增加一个分页功能就非常有必要了,但很多朋友在实现分页功能的时候遇到了问题。今天我们就来介绍一下如何使用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($queryas$q){
//列出用户
}

实现分页的原理就是需要对结果进行分割,拿到需要的每一页的数据,然后进行页面渲染。而paginate_links函数就是WordPress提供的一个非常方便的用于生成分页链接的函数,我们可以把需要的数据(每页显示的数据量,总数据量和当前页数)传递给它,它会自动帮助我们生成分页链接。不仅如此,这个函数还支持各种传参、格式化等操作,非常灵活。

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中自定义数据表的分页功能也可以通过paginate_links函数实现。如果你比较熟悉其他分页函数库,例如paginator,用法也是类似的。

添加UTHEME为好友
扫码添加UTHEME微信为好友
· 分享WordPress相关技术文章,主题上新与优惠动态早知道。
· 微信端最大WordPress社群,限时免费入群。