博客 / WordPress/ WordPress上一页下一页数字文章分页导航代码

WordPress上一页下一页数字文章分页导航代码

在开发 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.phparchive.phpsearch.php)中调用该函数:

<?php custom_pagination(); ?>

注意事项

  • 确保在主循环(if ( have_posts() ) : while ( have_posts() ) : the_post();)之后调用此函数。
  • 此函数依赖于 WordPress 的 paginate_links() 核心函数,兼容性良好。
  • 如需调整样式,可以通过 CSS 为输出的分页链接添加类名进行美化。

发表评论

您的邮箱不会公开。必填项已用 * 标注。