猿问

WordPress分页不会转到最后一页

我正在尝试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。


我究竟做错了什么?


青春有我
浏览 152回答 1
1回答

德玛西亚99

问题是 WordPress 假设您仍然期望每页有 10 个帖子,因为您的查询实际上是页面中间的独立查询。您是否只是想限制此特定帖子类型每页的帖子数量?或者你还有什么想做的吗?您可以使用pre_get_posts以更简洁的方式实现此目的function tweak_posts_per_page( $query ) {&nbsp; &nbsp; if( !is_admin() && $query->is_author() && $query->is_main_query() ) :&nbsp; &nbsp; &nbsp; &nbsp; $query->set( 'posts_per_page', 5 );&nbsp; &nbsp; &nbsp; &nbsp; $query->set( 'orderby', 'modified' );&nbsp; &nbsp; &nbsp; &nbsp; return;&nbsp; &nbsp; endif;}add_action('pre_get_posts', 'tweak_posts_per_page');将此代码添加到您的 functions.php 文件或类似文件中;如果需要,您可以在 IF 语句中添加额外的条件来处理何时应用此调整。你应该会发现你的分页在那之后会起作用。pre_get_posts 用于调整 WordPress在运行查询之前将运行的查询此外,您可以完全从代码中删除查询 - 只需将循环保留在其中以循环通过现在调整后的主查询。编辑:添加了附加的“is_author”条件语句,并添加了“orderby”调整
随时随地看视频慕课网APP
我要回答