分页(上):从自造函数到标准写法

作者: admin 分类: wordpress主题制作教程 发布时间: 2026-11-06 18:33

先看一个自造的轮子

caogenbj 的分页是作者自己写的 lingfeng_pagenavi(),一百多行,用 for 循环拼出一堆 <li>。

能跑,但里面有几个问题(下一篇细讲)。这一篇先说:WordPress 其实自带分页函数,不用自己造。

最简单的上一页 / 下一页

<?php previous_posts_link( '上一页' ); ?>
<?php next_posts_link( '下一页' ); ?>

两个函数直接输出链接。第一页时,previous_posts_link 什么都不输出;最后一页时,next_posts_link 什么都不输出。

就这么简单。适合极简主题。

数字分页

想要“1 2 3 … 下一页”那种数字分页,用 paginate_links():

<?php
echo paginate_links( array(
    'prev_text' => '上一页',
    'next_text' => '下一页',
) );

默认它会读主查询的总页数和你当前所在页,不用传 total 和 current(除非你用的是自定义查询)。

它输出的 HTML 是 <a> 和 <span> 交替,外面自带一个 .page-numbers 的容器,可以直接写 CSS。

自造函数 vs 内置函数

自造 lingfeng_pagenavi paginate_links
代码量 100+ 行 1 行
维护 自己改 WordPress 维护
兼容性 看写法 官方保证
样式 自己定 class .page-numbers

结论:除非你有很特殊的显示需求,否则别自己造分页轮子。

caogenbj 为什么自造

我猜是当年为了让分页长得像 Bootstrap 的 pagination 组件(那个组件要求 <ul class="pagination"><li>...</li></ul> 结构),而 paginate_links 输出的是 <a>,结构对不上。

这种“为了配合框架而自造”的思路本身没错,但要注意写法——下一篇会看到,它在“空 li”上翻了车。

一个前提:分页只在列表页出现

分页函数只能在“有多篇文章”的页面用(首页、分类页、搜索页)。文章页、页面没有分页,调了也没输出。

所以一般会包一层判断:

<?php if ( $wp_query->max_num_pages > 1 ) : ?>
    <?php previous_posts_link( '上一页' ); ?>
    <?php next_posts_link( '下一页' ); ?>
<?php endif; ?>

小结

一句话记住:分页别自己造轮子——简单用 previous/next_posts_link,要数字用 paginate_links。

下一篇看 caogenbj 那个自造分页的具体问题。

本系列导航

相关文章

发表回复

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

Powered by 草根站长笔记 © 2015-2026 草根站长笔记 Inc.版权所有,禁止转载