为了账号安全,请及时绑定邮箱和手机立即绑定

WordPress分页不会转到最后一页

WordPress分页不会转到最后一页

PHP
青春有我 2022-01-14 16:59:37
我正在尝试WP_Query为我的循环使用自定义,以限制每页显示的帖子数量。但是,分页功能似乎不尊重我设置的这个限制。这是我的代码:$current_page = (get_query_var('paged')) ? get_query_var('paged') : 1;$author_post_args = array(    'post_type'      => 'post',    'author_name'    => $curauth->user_nicename,    'posts_per_page' => 5,    'paged' => $current_page,    'orderby'        => 'modified',    'no_found_rows'  => true,    'ignore_sticky_posts' => '1');$loop = new WP_Query( $author_post_args );$temp_query = $wp_query;$wp_query   = NULL;$wp_query   = $loop;if($loop->have_posts()):    while($loop->have_posts()): $loop->the_post(); ?>        <div class="post-list">            <?php             $title = the_title("", "", false);            ?>            <h2><a href="<?php the_permalink();?>"><?php echo $title; ?></a></h2>            <time>Last Updated — <?php the_modified_date('F j, Y'); ?></time>            <p><?php the_excerpt(); ?></p>        </div><?php    endwhile;endif;wp_reset_postdata();previous_posts_link('<i class="fas fa-backward"></i> Newer Posts');next_posts_link('Older Posts <i class="fas fa-forward"></i>', $loop->max_num_pages);$wp_query = NULL;$wp_query = $temp_query;我在网站上搜索了一个解决方案,发现了这个问题。该解决方案似乎适用于 OP,但不适用于我。就我而言,每页的帖子限制为 5。但是,页数仍然停留在 3。我无法转到第 4 页并出现Not Found错误。作者共有 26 篇文章。因此,我应该能够转到第 6 页。页数仍然由函数根据Settings > Reading > Blog pages show at mostWordPress 仪表板中指定的值确定,该值设置为 10。我究竟做错了什么?
查看完整描述

1 回答

?
德玛西亚99

TA贡献1770条经验 获得超3个赞

问题是 WordPress 假设您仍然期望每页有 10 个帖子,因为您的查询实际上是页面中间的独立查询。您是否只是想限制此特定帖子类型每页的帖子数量?或者你还有什么想做的吗?


您可以使用pre_get_posts以更简洁的方式实现此目的


function tweak_posts_per_page( $query ) {

    if( !is_admin() && $query->is_author() && $query->is_main_query() ) :

        $query->set( 'posts_per_page', 5 );

        $query->set( 'orderby', 'modified' );

        return;

    endif;

}


add_action('pre_get_posts', 'tweak_posts_per_page');

将此代码添加到您的 functions.php 文件或类似文件中;如果需要,您可以在 IF 语句中添加额外的条件来处理何时应用此调整。你应该会发现你的分页在那之后会起作用。


pre_get_posts 用于调整 WordPress在运行查询之前将运行的查询


此外,您可以完全从代码中删除查询 - 只需将循环保留在其中以循环通过现在调整后的主查询。


编辑:添加了附加的“is_author”条件语句,并添加了“orderby”调整


查看完整回答
反对 回复 2022-01-14
  • 1 回答
  • 0 关注
  • 150 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信