WordPress 自定义循环里取不到分类,the_post 忘调了
摘要
照手册写了个 WP_Query,正文标题能出来,get_the_category() 返回空数组。不报错,就是不显示。查了一个多小时。have_posts() 只挪游标,the_post() 才塞全局我总是把这俩当成一回事。实际上 the_
照手册写了个 WP_Query,正文标题能出来,get_the_category() 返回空数组。不报错,就是不显示。查了一个多小时。
have_posts() 只挪游标,the_post() 才塞全局
我总是把这俩当成一回事。实际上 the_post() 干两件事:把当前文章写进全局 $post,再触发 setup_postdata。少了它,模板标签读的还是页面上一条,或者 ID=0,分类自然查不到。
<?php
$q = new WP_Query( array( 'posts_per_page' => 5 ) );
if ( $q->have_posts() ) :
while ( $q->have_posts() ) : $q->the_post(); ?>
<h3><?php the_title(); ?></h3>
<?php the_category( ', ' ); ?>
<?php endwhile;
endif;
wp_reset_postdata();文件是 index.php 或任意模板,位置看你要放在哪块。
循环后面那句 reset 别省
wp_reset_postdata() 不调,主循环的全局 $post 被你顶掉了,页面底部一堆东西会错乱——面包屑、相关文章、分页。我踩过一次,症状是页脚的时间变成最后一篇的。当时完全没想到是这儿。
如果循环里要靠全局状态的东西不多,还有个捷径:get_posts() 返回数组,配 setup_postdata 手动 setup。我一般懒得这么写,容易漏。
2026年10月20日 17:34
前后30天 · 点日期看归档
9月20日
9月21日
9月22日
9月23日
9月24日
9月25日
9月26日
9月27日
9月28日
9月29日
9月30日
10月1日
10月2日
10月3日
10月4日
10月5日
10月6日
10月7日
10月8日
10月9日
10月10日
10月11日
10月12日
10月13日
10月14日
10月15日
10月16日
10月17日
10月18日
10月19日
10月20日
10月21日
10月22日
10月23日
10月24日
10月25日
10月26日
10月27日
10月28日
10月29日
10月30日
10月31日
11月1日
11月2日
11月3日
11月4日
11月5日
11月6日
11月7日
11月8日
11月9日
11月10日
11月11日
11月12日
11月13日
11月14日
11月15日
11月16日
11月17日
11月18日
11月19日