分页允许您的用户在多页内容之间进行翻页。

WordPress 在以下情况下可以使用分页:

  • 查看帖子列表时,如果帖子的数量超过一页所能容纳的数量;或
  • 通过使用以下标签手动拆分较长的帖子:<!--nextpage-->

使用分页导航帖子列表

在 WordPress 站点中,分页最常见的用途是将长篇帖子列表拆分为单独的页面。无论您是在查看类别、归档还是博客或站点的默认索引页面,WordPress 默认每页仅显示 10 篇帖子。用户可以在“阅读”屏幕上更改每页显示的帖子数量:管理 > 设置 > 阅读。

示例

带分页的循环

这个简化示例展示了您可以在主循环中添加分页函数的位置。在循环之前或之后添加这些函数。

<?php if ( have_posts() ) : ?>

    <!-- 在循环开始前启动分页功能 -->
    <div class="nav-previous alignleft"><?php next_posts_link( 'Older posts' ); ?></div>
    <div class="nav-next alignright"><?php previous_posts_link( 'Newer posts' ); ?></div>
    <!-- 在循环开始前结束分页功能 -->

	<!-- 主循环开始 -->
	<?php while ( have_posts() ) : the_post();  ?>

	<!-- 您主题的其余主要循环代码 -->

    <?php endwhile; ?>
    <!-- 主循环结束 -->

    <!-- 在循环结束后启动分页功能 -->
    <div class="nav-previous alignleft"><?php next_posts_link( 'Older posts' ); ?></div>
    <div class="nav-next alignright"><?php previous_posts_link( 'Newer posts' ); ?></div>
    <!-- 在循环结束后结束分页功能 -->

<?php else : ?>

	<?php _e( 'Sorry, no posts matched your criteria.' ); ?>

<?php endif; ?>

显示分页链接的方法

当在模板文件之外使用这些用于分页的循环的分页函数时,您必须调用全局变量 $wp_query。
function your_themes_pagination() {
	global $wp_query;
	echo paginate_links();
}

WordPress 拥有许多用于在您的循环中显示指向其他页面的链接的函数。其中一些函数仅在非常特定的上下文中使用。您会在单篇帖子页面上使用不同的函数,而在归档页面则使用另一种函数。以下部分涵盖归档模板的分页功能。随后的部分将介绍单篇帖子的分页。

简单分页

posts_nav_link

最简单的方法之一是 posts_nav_link()。只需将函数放置在循环之后的模板中即可。这会生成指向下一页帖子和上一页帖子的链接(如果适用)。此函数非常适合具有简单分页需求的主题。

posts_nav_link();

next_posts_link & prev_posts_link

在构建主题时,请使用 next_posts_link() 和 prev_posts_link() 来控制上一页和下一页帖子链接出现的位置。

next_posts_link();
previous_posts_link();

如果您需要将分页链接传递给 PHP 变量,可以使用 get_next_posts_link() 和 get_previous_posts_link()。

$next_posts = get_next_posts_link();
$prev_posts = get_previous_posts_link();

数字分页

当您拥有大量内容页面时,显示页码列表可以提供更好的体验,这样用户可以直接点击任何一页的链接,而无需反复点击“下一页”或“上一页”。WordPress 提供了几个函数来自动显示数字分页列表。

适用于 WordPress 4.1+

如果您需要更强大的分页选项,您可以为 WordPress 4.1 及更高版本使用 the_posts_pagination()。这将输出一组页码以及上一页和下一页帖子的链接。

the_posts_pagination();

适用于 WordPress 4.1 之前的版本

如果您希望您的分页支持旧版本的 WordPress,您必须使用 paginate_links()。

echo paginate_links();

单篇帖子之间的分页

所有上述函数都应用于索引和归档页面。当您查看单篇博客文章时,必须使用 prev_post_link 和 next_post_link。请在您的 single.php 中将以下函数放置在循环下方。

previous_post_link();
next_post_link();

文章内部的分页

WordPress 提供了一个可以放在帖子内容中以启用该帖子分页的标签:
<!--nextpage-->
如果您在内容中使用该标签,请确保将 wp_link_pages 函数放置在您的 single.php 模板中的循环内。

<?php if ( have_posts() ) : ?>

	<!-- 主循环开始 -->
	<?php while ( have_posts() ) : the_post(); ?>

		<?php the_content(); ?>

		<?php wp_link_pages(); ?>

	<?php endwhile; ?>
	<!-- 主循环结束 -->

<?php endif; ?>