使用 paginate_links 函数实现 WordPress 分类标签分页功能

我们知道,WordPress 的文章列表和评论都是自带分页功能的,用户列表分页和分类列表分页也以很简单的实现,…

我们知道,WordPress 的文章列表和评论都是自带分页功能的,用户列表分页和分类列表分页也以很简单的实现,其实只要知道了实现分页功能的原理,一切皆可分页。

实现分类列表有两个必须的数据:$number$offset 参数,$number 是用来指定每页显示的数据数量,$offset 是用来计算从哪条数据开始获取。我们把这两个数据传递给获取分类项目的函数:get_terms,最终会实现类似类似 select * from wp_terms limit 10,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;

echo paginate_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 函数,我们也可以自己实现的分页函数来实现效果更丰富的分页功能。

类别:WordPress 教程精选

本文收集自互联网,转载请注明来源。
如有侵权,请联系 wper_net@163.com 删除。

评论 (0)COMMENT

登录 账号发表你的看法,还没有账号?立即免费 注册