我正在尝试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”调整
- 1 回答
- 0 关注
- 150 浏览
添加回答
举报
0/150
提交
取消