web-dev-qa-db-fra.com

Show the date in the time

La boucle suivante me convient parfaitement pour obtenir des publications avec une date donnée avec l'utilisation de the_time (...):

<?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();
?>

Mais les 10 premiers postes affichent toujours la même date (c'est-à-dire le 21 juillet 2017). Je souhaite afficher cette date une seule fois pour ces 10 messages. Et si je crée un nouveau post demain, il devrait alors afficher une nouvelle date sous ces 10 posts, puis le post associé à cette nouvelle date. Comment puis-je transformer ma boucle pour penser de cette façon sans coder en dur les dates?

Merci

2
klewis

Utilisez simplement the_date(), il a cela comme une fonctionnalité intégrée.

Voir le dev docs pour plus d’informations.

3
birgire

Vous pouvez enregistrer la dernière date sur une variable et à chaque itération, comparer la date du jour à la dernière date et écrire la date si elle est différente:

<?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();
?>
1
dbeja