Php WordPress分页不转到最后一页

Php WordPress分页不转到最后一页,php,wordpress,pagination,Php,Wordpress,Pagination,我试图对我的循环使用自定义WP_查询,以限制每页显示的帖子数量。但是,分页函数似乎不遵守我设置的这个限制。这是我的密码: $current_page = (get_query_var('paged')) ? get_query_var('paged') : 1; $author_post_args = array( 'post_type' => 'post', 'author_name' => $curauth->user_nicename,

我试图对我的循环使用自定义WP_查询,以限制每页显示的帖子数量。但是,分页函数似乎不遵守我设置的这个限制。这是我的密码:

$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页并获得未找到的错误。作者总共发表了26篇文章。因此,我应该能够进入第6页

页面数量仍然由函数根据WordPress dashboard中设置为10的“设置>阅读>博客页面最多显示”下指定的值确定

我做错了什么


<>谢谢。

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

通过使用

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

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

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


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

谢谢efreeman.:我不低估这一部分,您仍然期待10页每页,因为您的查询实际上是一个独立的查询在页面的中间。页面上显示的结果数等于我在自定义查询中为每页帖子设置的值。但是,总页数限制为3,就好像WordPress在计算总页数时忽略了我的值一样。是的,我想将作者页面的每页文章数限制为5。我在问题中提供的代码仍然可以做到这一点。但是,它并没有超出第3页。我的意思是WordPress仍然希望每页有10篇文章,因为它已经运行了主查询,按照管理中设置的每页文章数限制,它的行为符合预期-您的查询不会直接影响主查询。3页是有意义的,每页26篇/10篇,第1页10篇,第2页10篇,第3页6篇-我将编辑条件语句,您需要很快处理作者页!谢谢弗里曼的解释我还有一个问题。在我的自定义查询中,我指定希望根据文章的最后修改日期对其进行排序。页面上回复的帖子确实是根据最后修改日期排序的。我的问题是,为什么我为orderby和posts\u per\u页面设置的值会反映在输出中,但不会用于计算总页数。谢谢是的,您称之为$wp\u query=$temp\u query;大概是为了恢复原始查询-这是不必要的,因为wp_reset_postdata有效地执行相同的操作,它会将查询变量返回到其原始状态,并且在分页函数之前执行此操作,它只提供到第3页的链接-您可以在调用wp_reset_postdata函数之前使用分页函数,并让它显示正确的页面链接,但是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');