我最初以为您在页面上使用问题中的代码(类型为page
), 但是,如果您实际上是在基于存档的页面(例如主页、分类页面等)上使用该代码,则404
错误是正常的。无法对基于存档的页面进行辅助/自定义查询分页。嗯,使用默认值时不是paged
URL中的查询字符串。
因此,一种可能的解决方案是使用页面并在其中创建自定义循环—基本上,在您进行了我在原始答案中提到的更改之后,问题中的代码就可以工作了。一、 e.:
更改base
您的paginate_links()
电话:
// change from this
\'base\' => str_replace( $big, \'%#%.html\', esc_url( home_url( \'/<slug>/page/\' . $big ) ) )
// to this
\'base\' => str_replace( $big, \'%#%\', esc_url( get_pagenum_link( $big ) ) )
除此之外
base
, 您还需要更改
\'total\' => 6
到
\'total\' => $testimonials->max_num_pages
. (更多详细信息
here)
但如果您确实想自定义主查询,请使用pre_get_posts
hook.
因此,例如,如果您的主页设置为显示最新的帖子,但您希望只包含该类型的帖子blog_post
, 然后你可以简单地把它添加到你的主题中functions.php
文件:
add_action( \'pre_get_posts\', function ( $query ) {
if ( ! is_admin() && $query->is_main_query() && is_home() ) {
$query->set( \'post_type\', \'blog_post\' );
$query->set( \'posts_per_page\', 2 );
}
} );
这就是你真正需要的。一、 e.无需担心分页,因为一个好的主题总是包括主页和其他基于归档的页面上的主查询的工作分页。