makoラボ

日常や勉強会や技術ネタ

the_dateとget_the_dateの違い

WordPressでトップページ等で記事の一覧を表示したい場合があって、その場合日付を見出しに持ってきたりすると思います。

そんな時、同じ日付に投稿された記事がある場合に見出しに日付が表示されない現象が起きてしまいました。

日記:2014/03/26
お好み焼きを作ってみた
お知らせ:2014/03/23
誕生日でした
日記:
◯◯に行って来ました

原因は『the_date』

上のように表示されてしまった時のソースは以下のような感じでした。

<dl>
<?php 
  // 日付降順で最新3件を取得する
  $args = array( 'posts_per_page' => 3, 'order'=> 'DESC', 'orderby' => 'date' );
  $postslist = get_posts( $args );

  foreach ( $postslist as $post ) :
  setup_postdata( $post ); ?>

    <dt><?php the_date('Y/m/d', '', '', true); ?></dt>
    <dd><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></dd>

<?php
endforeach; 
wp_reset_postdata();
?>
</dl>

見出しにしようしている日付の所でthe_dateを使用していたのですがそれが問題でした。 the_dateは1日に複数記事の投稿があった場合、最新の投稿だけに投稿日時を出力する。とのことなので最初の1件しか表示されないです。

全部表示したいなら『get_the_date』

<dl>
<?php 
  $args = array( 'posts_per_page' => 3, 'order'=> 'DESC', 'orderby' => 'date' );
  $postslist = get_posts( $args );

  foreach ( $postslist as $post ) :
  setup_postdata( $post ); ?>

    <dt><?php echo get_the_date('Y/m/d', '', '', true); ?></dt>
    <dd><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></dd>

<?php
endforeach; 
wp_reset_postdata();
?>
</dl>

全てに日付を表示したい場合はget_the_dateを使うの良いようです。こちらだと『すべての投稿記事に投稿日時を表示する』なので投稿日時が全件表示されます。

おわり

『the_date』『get_the_date』の違いでハマってしまいました。また困ったときのためにメモ。