欢迎光临 WordPress 智库!

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

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

使用 paginate_links 函数实现 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 主题定制开发服务

本站长期承接 WordPress 主题、插件、基于 WooCommerce 的商店商城开发业务。 我们有 8 年 WordPress 开发经验,如果你想 用 WordPress 开发网站, 请联系 QQ: 470266798,或邮箱: 4626395@gmail.com 咨询。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*