web-dev-qa-db-ja.com

その日付に関連する投稿の各セットに対して一度だけ日付を表示する

次のループは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();
?>

ただし、最初の10件の投稿には常に同じ日付が表示されます(2017年7月21日)。私はこれらの10の投稿について一度だけその日付を表示したいです。また、明日新しい投稿を作成した場合は、これら10件の投稿の下に新しい日付が表示され、次にその新しい日付に関連付けられた投稿が表示されます。ハードコーディングされた日付がなくても、ループを変換してそのように考えることができますか。

ありがとう

2
klewis

the_date()を使うだけです。これは組み込みの機能として持っています。

詳細については devのドキュメント を参照してください。

3
birgire

最後の日付を変数に保存し、繰り返しのたびに現在の日付と最後の日付を比較することができます。異なる場合は単に日付を書きます。

<?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