如何在WordPress分类页面动态展示对应分类的文章列表?
问题原因
你现有代码未加入当前分类的筛选条件,所以get_posts默认会返回全站所有公开状态的文章。
解决方案
方案1:使用WordPress原生主循环(推荐)
标准分类模板category.php自带默认主查询,已经自动做好了当前分类的文章筛选逻辑,无需额外自定义查询,代码更简洁、兼容性更好:
<?php if ( have_posts() ) : ?> <?php while ( have_posts() ) : the_post(); ?> <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2> <?php endwhile; ?> <!-- 可选:添加分页功能 --> <?php the_posts_navigation(); ?> <?php else : ?> <p>当前分类下暂无文章</p> <?php endif; ?>
方案2:自定义查询适配需求
如果你确实需要自定义查询(比如固定每页显示5篇、额外追加其他筛选条件),只需要在get_posts的参数中加入当前分类ID的筛选即可,修改后代码如下:
<?php // 获取当前分类页面对应的分类ID $current_cat_id = get_queried_object_id(); $lastposts = get_posts(array( 'posts_per_page' => 5, 'cat' => $current_cat_id // 追加当前分类筛选条件 )); if ($lastposts) { foreach ($lastposts as $post): setup_postdata($post); ?> <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2> <?php endforeach; wp_reset_postdata(); } ?>
其中get_queried_object_id()是WordPress官方内置函数,在分类、标签等存档页面调用时会自动返回当前页面对应的分类/标签ID,无需手动指定,适配所有分类页面。
内容的提问来源于stack exchange,提问作者Shundo
相关产品推荐
相关产品推荐

