对于与该日期相关的每组帖子,只显示一次日期

时间:2017-07-21 作者:klewis

下面的循环对于我使用时间(…)获取具有给定日期的帖子非常有用:

<?php
    $myPost = new WP_Query( array(
    \'posts_per_page\' => \'50\',
    \'orderby\' => \'modified\',
    \'order\' => \'DESC\'
    ));
    while ($myPost->have_posts()): $myPost->the_post();
?>

<div class="timeline-group">
<p class="modified-time"><?php the_time(\'F j, Y\') ?></p>
<h5><a href="<?php the_permalink();?>"><?php the_title();?></a></h5>
</div>

<?php
    endwhile;
    //Reset Post Data
    wp_reset_postdata();
?>
但前10篇帖子总是显示相同的日期(即2017年7月21日)。我只想为这10篇文章显示一次该日期。如果我明天创建一个新帖子,那么它应该在这10篇帖子下面显示一个新的日期,然后再显示与该新日期关联的帖子。如果没有硬编码日期,我如何才能将循环转换为那样思考?

谢谢

2 个回复
最合适的回答,由SO网友:birgire 整理而成

仅使用the_date(), 它有一个内置功能。

请参见dev docs 了解更多信息。

SO网友:dbeja

您可以将最后日期保存在变量上,并在每次迭代中比较当前日期和最后日期,如果它们不同,只需写入日期即可:

<?php
    $myPost = new WP_Query( array(
    \'posts_per_page\' => \'50\',
    \'orderby\' => \'modified\',
    \'order\' => \'DESC\'
    ));
    $lastDate = \'\';
    while ($myPost->have_posts()): $myPost->the_post();
    $currentDate = get_the_time(\'F j, Y\');
?>

<?php if($currentDate != $lastDate): ?>
    <h2><?php the_time(\'F j, Y\') ?></h2>
    <?php $lastDate = $currentDate; ?>
<?php endif; ?>

<div class="timeline-group">
<h5><a href="<?php the_permalink();?>"><?php the_title();?></a></h5>
</div>

<?php
    endwhile;
    //Reset Post Data
    wp_reset_postdata();
?>

结束