这个问题可能更多为主题开发者所遇见,一款推向市场的主题一般都会几经测试,应该不容易到客户手中才发现这个问题。所以网络上的相关讨论不多,博主也是调试了几天才大致有了一些思路:
后台的默认参数
在wordpress的后台设置里,是可以设置归档页每页显示多少篇文章的,就是阅读里的“博客页面至多显示xx篇文章”这一选项,来看一下它的html标签:
<label for="posts_per_page">博客页面至多显示</label>
显然这一栏的值,会赋予posts_per_page
参数,但是我们在一个自定义循环new WP_Query($args)
中,常常也会去赋值,这样很容易造成分页函数的数值冲突。
匹配机制
测试下来,后台可见的posts_per_page
,可以正常使用函数 the_posts_pagination()
,如果在自定义循环中修改添加了一个较小的新值,那么很可能在没有达到后台的posts_per_page
限制值前,你无法获取到分页。这个时候虽然可以考虑利用paginate_links
函数来正确获取到分页,但从/page/2
开始,我们会喜提一个404错误。
解决方案
第一个方法是绝对遵从后台设置的值来布置页面,这样对于用户而言也更便于设置,如果确实想要实现不同类型的文章有不同的显示数量,可以考虑将后台的这个posts_per_page
设置为最小值1
,这个方法在wordpress版本4.9.26
下实测有效。