
本文详解如何使用 paginate_links() 函数生成符合 Bootstrap 或自定义 HTML 结构的分页列表,重点解决将页码动态注入 <li> 元素的需求,并提供可直接复用的代码示例与最佳实践。
本文详解如何使用 `paginate_links()` 函数生成符合 bootstrap 或自定义 html 结构的分页列表,重点解决将页码动态注入 `
WordPress 默认的分页函数 the_posts_pagination() 生成的是语义化但样式受限的结构,而实际开发中(尤其是构建响应式主题时),我们常需将分页嵌入特定 HTML 模板——例如你提供的 Bootstrap 风格 <ul class="justify-content-center"> 容器中。此时,直接调用 paginate_links() 并设置 'type' => 'list' 是最简洁、原生兼容的解决方案。
该函数会自动输出一个标准的无序列表 <ul class="page-numbers">,其中每个页码都包裹在 <li> 内,且当前页自动添加 class="current"(而非 active),因此只需微调 CSS 类名或通过参数定制即可无缝集成:
<?php
echo paginate_links(array(
'type' => 'list',
'prev_text' => '«',
'next_text' => '»',
'mid_size' => 2,
'total' => $wp_query->max_num_pages,
));
?>⚠️ 注意事项:
- paginate_links() 默认依赖全局 $wp_query,若在自定义查询(如 WP_Query 实例)中使用,务必传入 'total' => $custom_query->max_num_pages 和 'current' => max(1, get_query_var('paged'));
- 输出的 <ul> 默认 class 为 page-numbers,可通过 'class' => 'justify-content-center' 参数覆盖(WordPress 5.7+ 支持),或在外层包裹 <div class="justify-content-center"> 后用 CSS 重置样式;
- 若需将 class="active" 替换为默认的 class="current",推荐在 CSS 中统一处理:.page-numbers .current { @apply bg-blue-500 text-white; }(Tailwind 示例)或 .page-numbers .current a { ... };
- 避免混用 posts_nav_link() 或 the_posts_pagination(),它们无法生成 <li> 结构,也不支持 type=list。
最终效果将自动适配你的 HTML 结构需求,无需手动循环或解析 HTML 字符串,既安全又符合 WordPress 编码规范。


















