时间:2024-04-03
我们知道,WordPress的文章列表和评论都是自带分页功能的,用户列表分页和分类列表分页也以很简单的实现,其实只要知道了实现分页功能的原理,一切皆可分页。
实现分类列表有两个必须的数据:$number
和$offset
参数,$number
是用来指定每页显示的数据数量,$offset
是用来计算从哪条数据开始获取。我们把这两个数据传递给获取分类项目的函数:get_terms
,最终会实现类似类似select*fromwp_termslimit10,20;
的SQL查询,每次点击下一页时,limit后面的数字都会递增,来查询显示下一页的数据。
paginate_links函数需要需要当前页数和最大页数来计算分类数据,显示分页列表,而 get_terms函数需要显示数量($number)和偏移量($offset)数据两个来获取分类数据,实现上面说的SQL查询,我们通过下面的代码把这些数据准备好。
$taxonomy='post_tag'; $number=100; //分页参数 $page=(get_query_var('paged'))?get_query_var('paged'):1; $offset=($page>0)?$number*($page-1):1; $totalterms=wp_count_terms($taxonomy,['hide_empty'=>true]); $totalpages=ceil($totalterms/$number); $tags=get_terms([ 'taxonomy'=>$taxonomy, 'orderby'=>'name', 'order'=>'ASC', 'hide_empty'=>true, 'fields'=>'all', 'number'=>$number, 'offset'=>$offset, 'cache_domain'=>'core', ]);
有了上面准备好的数据,我们把数据传递给paginate_links
函数就可以实现和文章列表分页或者用户列表分页一样的功能了。
$big=999; echopaginate_links([ 'base'=>str_replace($big,'%#%',esc_url(get_pagenum_link($big))), 'format'=>'', 'current'=>max(1,$page), 'total'=>$totalpages, 'prev_text'=>'上一页', 'next_text'=>'下一页', 'type'=>'list', 'show_all'=>false, 'end_size'=>3, 'mid_size'=>0, ]);
除了使用WordPress内置的 paginate_links
函数,我们也可以自己实现的分页函数来实现效果更丰富的分页功能。
Copyright © 2019-2024 jsp.hk