wordpress 执行query_post 后台分页(the_posts_pagination)错误的解决方法

query_post 在 wordprss 是一个主查询,如果在 query_post 中输入 每页的数量,使用不合理会导致函数, the_posts_pagination 输出错误(少链接或者多链接, 404等情况的发生)

wordpess每页篇数
wordpess每页篇数

比如一个网站的产品中心,需要输出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 中,执行的太晚,可能不会起到应有的效果。