如何在WordPress博客列表每页展示13篇指定分类文章并将最新文章居中
解决WordPress博客列表页指定分类文章分页展示问题

我正在尝试在博客列表页实现如下布局,已完成部分效果,但无法在每页展示指定分类的最新文章,该如何实现?以下是我的代码:
<?php $args = array( 'post_type' => 'post', 'posts_per_page' => 13, ); $paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1; $loop = new WP_Query( $args ); $count = 0; while ( $loop->have_posts() ) : $loop->the_post(); $count++ ?> <?php if( $count % 7 === 0 ){ ?> <div class="col-md-12"> <?php the_title(); ?> </div> <?php } else { ?> <div class="col-md-4"> <?php the_title(); ?> </div> <?php } ?> <?php endwhile; ?> <div class="d-flex justify-content-center"> <nav class="pagination "> <?php pagination_bar( $loop ); ?> </nav> </div> <?php wp_reset_postdata(); ?>
要实现指定分类的最新文章分页展示,只需在WP_Query的参数中补充分类筛选和分页绑定逻辑,修改后的完整代码如下:
<?php // 定义查询参数,新增分类筛选、分页绑定及排序规则 $args = array( 'post_type' => 'post', 'posts_per_page' => 13, 'paged' => (get_query_var('paged')) ? get_query_var('paged') : 1, // 绑定分页参数,确保分页生效 'category_name' => '目标分类别名', // 替换为你要展示的分类别名;若用分类ID,改为 'cat' => 分类ID 'orderby' => 'date', // 按文章发布日期排序 'order' => 'DESC' // 降序排列,优先展示最新文章 ); $loop = new WP_Query($args); $count = 0; while ($loop->have_posts()) : $loop->the_post(); $count++ ?> <?php if($count % 7 === 0){ ?> <div class="col-md-12"> <?php the_title(); ?> </div> <?php } else { ?> <div class="col-md-4"> <?php the_title(); ?> </div> <?php } ?> <?php endwhile; ?> <div class="d-flex justify-content-center"> <nav class="pagination "> <?php pagination_bar($loop); ?> </nav> </div> <?php wp_reset_postdata(); ?>
关键调整说明:
- 分类筛选:根据你的需求选择参数:
- 用分类别名:
'category_name' => 'tech'(将tech替换为实际分类的别名) - 用分类ID:
'cat' => 123(将123替换为目标分类的ID)
- 用分类别名:
- 分页绑定:必须将
paged参数传入$args,否则分页逻辑会失效,每页都会重复显示同一组文章 - 排序规则:显式设置
orderby和order参数,确保始终按发布日期倒序展示最新文章,避免因主题默认设置导致的排序异常
如果你的pagination_bar函数是基于WP_Query对象开发的自定义分页函数,修改后即可正常实现指定分类文章的分页展示。
内容的提问来源于stack exchange,提问作者Parth Ranjan
相关产品推荐
相关产品推荐

