分页允许你的用户来回翻阅多个页面的内容。
WordPress可以在以下情况下使用分页:
- 当一个页面无法容纳更多的文章时,可以查看文章列表
- 通过使用以下标签,手动拆分长篇文章:
<!--nextpage-->
使用分页来浏览文章列表
在WordPress网站中,分页最常见的用途是把长长的文章列表分成独立的页面。无论你是在查看一个博客或网站的分类、存档或默认的索引页,WordPress默认每页只显示10篇文章。用户可以在阅读界面上改变每页显示的文章数量。管理员 > 设置 > 阅读。
示例
循环与分页
这个简化的例子显示了你可以为主循环添加分页函数的地方。在循环之前或之后添加这些函数。
<?php if ( have_posts() ) : ?> <!-- Add the pagination functions here. --> <!-- Start of the main loop. --> <?php while ( have_posts() ) : the_post(); ?> <!-- the rest of your theme's main loop --> <?php endwhile; ?> <!-- End of the main loop --> <!-- Add the pagination functions here. --> <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() ) : ?> <!-- Start of the main loop. --> <?php while ( have_posts() ) : the_post(); ?> <?php the_content(); ?> <?php wp_link_pages(); ?> <?php endwhile; ?> <?php endif; ?>