在开发 WordPress 主题时,程序自带的文章分页功能有时可能无法满足特定需求,此时就需要自定义分页导航。本文介绍一种实现“上一页/下一页 + 数字页码”样式分页导航的方法。实现这种分页导航有多种方法,也有不少相关插件。但为了减少对插件的依赖,我们可以通过添加自定义函数来实现。以下是核心功能代码:
核心功能代码
function custom_pagination() {
global $wp_query;
$big = 999999999; // 需要一个不太可能的数字
$args = array(
'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
'format' => '?paged=%#%',
'current' => max( 1, get_query_var('paged') ),
'total' => $wp_query->max_num_pages,
'mid_size' => 2, // 当前页码两侧显示的页码数量
'prev_next' => true,
'prev_text' => __('« 上一页'),
'next_text' => __('下一页 »'),
'type' => 'plain',
'add_args' => false,
'add_fragment' => ''
);
echo paginate_links( $args );
}
代码说明
- base:用于构建分页链接的基础 URL 结构。
- format:页码在 URL 中的格式,
%#%会被页码替换。 - current:获取当前页码,确保最小值为 1。
- total:总页数,通常来自主查询。
- mid_size:控制当前页码两侧显示的页码数量,例如设为 2 会显示类似 « 上一页 ... 3 4 [5] 6 7 ... 下一页 » 的效果。
- prev_text / next_text:自定义“上一页”和“下一页”的显示文本。
使用方法
将上述 custom_pagination 函数添加到主题的 functions.php 文件中。然后,在需要显示分页的模板文件(如 index.php、archive.php 或 search.php)中调用该函数:
<?php custom_pagination(); ?>
注意事项
- 确保在主循环(
if ( have_posts() ) : while ( have_posts() ) : the_post();)之后调用此函数。 - 此函数依赖于 WordPress 的
paginate_links()核心函数,兼容性良好。 - 如需调整样式,可以通过 CSS 为输出的分页链接添加类名进行美化。