WordPress循环展示用户文章时日期显示异常问题求助
这不是Bug,是
the_date()的默认行为! 你遇到的问题完全是WordPress内置函数the_date()的设计逻辑导致的,不是bug,咱们一步步拆解清楚:
为什么只有第一篇文章显示日期?
the_date()有个特殊的默认规则:如果多篇文章的发布日期精确到天完全相同,它只会在第一篇同日期的文章旁输出一次日期,后续同日期的文章会自动跳过日期输出。如果你的所有测试文章都是同一天发布的,就会出现只有第一篇显示日期的情况——这是WordPress为了优化列表展示(避免重复显示相同日期)特意做的设计。
为什么显示的是当前日期而非文章实际日期?
这个大概率是因为the_date()在没有明确指定格式时,会调用WordPress默认的日期格式设置,但如果你的自定义查询($wpb_all_query)没有正确初始化全局文章对象,或者时区设置有偏差,就可能导致它误取当前日期。不过更可靠的解决方式是换用更直接的函数来获取文章日期。
修复方案
要让每篇文章都显示自己的实际发布日期,只需要把代码1里的<?php the_date(); ?>替换成以下任意一种写法:
写法1:用get_the_date()(推荐,更直观)
get_the_date()会直接返回当前文章的发布日期字符串,没有同日期去重的逻辑,你只需要echo输出它:
<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?> <?php echo get_the_date(); ?></a></li>
如果需要自定义日期格式(比如年-月-日),可以给函数传参数:
<?php echo get_the_date('Y-m-d'); ?>
写法2:用the_time()指定日期格式
the_time()原本是用来输出时间的,但也可以用来输出日期格式,它同样会为每篇文章单独输出:
<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?> <?php the_time('Y年m月d日'); ?></a></li>
为什么代码2没问题?
因为the_content()函数的逻辑就是直接输出当前文章的内容,没有像the_date()那样的同内容/同日期去重规则,所以每篇文章都能正常显示内容。
内容的提问来源于stack exchange,提问作者J. Doe
相关产品推荐
相关产品推荐

