wordpress 执行query_post 后台分页(the_posts_pagination)错误的解决方法
query_post 在 wordprss 是一个主查询,如果在 query_post 中输入 每页的数量,使用不合理会导致函数, the_posts_pagination 输出错误(少链接或者多链接, 404等情况的发生)
比如一个网站的产品中心,需要输出24篇,在 产品分类页面,使用如下代码。
$args = array(
'post_type'=>'post',
'post_status'=>'publish',
'posts_per_page'=>24,
'paged'=>$paged,
);
query_posts($args);
然后,分页的部分使用 这个代码。
the_posts_pagination(array(
'mid_size' => 3,
'prev_text' => '上一页',
'next_text' => '下一页',
'before_page_number' => '<span class="meta-nav screen-reader-text">第 </span>',
'after_page_number' => '<span class="meta-nav screen-reader-text"> 页</span>',
));
wp_reset_query();
如果产品数量超过后台,阅读的数量的设置,就会导致分页异常,因为分页函数,不清楚在 query_post 中设置的每页是 24个,修改方面是,使用下面的代码。
add_action('pre_get_posts', function( $query) {
if( is_category('cpzx') && $query->is_main_query() ) {
$query->set('posts_per_page', 24);
}
});
首先判断如果是 cpzx 分类页面,并且是主查询,就是设置好正确每页数量。这个代码要放在 模板的 functions.php 中,执行的太晚,可能不会起到应有的效果。