
目次
the_date()とは?
WordPressの the_date()
関数は、投稿が公開された「日付」をテンプレート上に表示するためのテンプレートタグです。ただし、get_the_date()
と異なり、同一日付の投稿が連続している場合には1回しか出力しないという特徴があります。アーカイブページやブログ一覧などで「日付ごとに区切って表示したい」といった場面で活用されます。
the_date()の基本構文
the_date( string $format = '', string $before = '', string $after = '', bool $echo = true )
the_date()の引数の説明
引数 | 型 | 説明 |
---|---|---|
$format | string | 日付の表示形式(例:'Y年n月j日' )。未指定時は管理画面の設定が使用される。 |
$before | string | 出力する日付の前に追加する文字列。 |
$after | string | 出力する日付の後に追加する文字列。 |
$echo | boolean | true なら表示、false なら文字列として返す。 |
the_date()の基本的な使い方
1. 投稿の公開日を表示する(デフォルトフォーマット)
<?php the_date(); ?>
管理画面「設定」→「一般」→「日付のフォーマット」で設定された形式で日付が表示されます。
2. カスタムフォーマットで出力
<?php the_date('Y年n月j日'); ?>
例:2025年7月17日
3. HTMLタグで囲んで出力
<?php the_date('Y/m/d', '<h2>', '</h2>'); ?>
出力:<h2>2025/07/17</h2>
4. 出力せず値だけ取得($echo = false)
$date = the_date('Y年m月d日', '', '', false);
echo '<p>この日の投稿日: ' . $date . '</p>';
get_the_date() との違い
比較項目 | the_date() | get_the_date() |
---|---|---|
出力 | 直接画面に表示(echo) | 値を返す(return) |
同一日付の連続 | 1度しか出力しない | 毎回表示する |
ループ外使用 | 不可(ループ内で使用) | 可(ループ外でも使用可能) |
この違いから、the_date()
はアーカイブページなどで「日ごとに区切る」処理に向いており、get_the_date()
は自由に加工したい場合に使われます。
the_date()の実用例:日付ごとに区切って投稿を表示
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
<?php the_date('Y年n月j日', '<h2>', '</h2>'); ?>
<div class="post">
<h3><?php the_title(); ?></h3>
<div><?php the_excerpt(); ?></div>
</div>
<?php endwhile; ?>
<?php endif; ?>
このように the_date()
をループ内で使うと、「日付見出し → 投稿 → 投稿 → …」とグループ化されたように表示されます。
the_date()の表示されない理由と対策
【よくある誤解】
- 「
the_date()
を使ってるのに日付が出ない!」
【理由】
- 同じ日付の投稿が連続している場合、2つ目以降の投稿では
the_date()
は何も出力しません。- これは「すでに表示された日付と同じだから」という仕様によるものです。
【対策】
- 常に日付を表示したい場合は
get_the_date()
を使って、echo
で明示的に出力する:
<?php echo get_the_date('Y年n月j日'); ?>
書式指定の参考(PHP date()
準拠)
書式 | 内容 | 例 |
---|---|---|
Y | 西暦4桁 | 2025 |
m | 月(ゼロ埋め) | 07 |
n | 月(ゼロなし) | 7 |
d | 日(ゼロ埋め) | 17 |
j | 日(ゼロなし) | 17 |
l | 曜日(英語) | Thursday |
D | 曜日(短縮) | Thu |
F | 月(英語) | July |
the_date()のよく使われる組み合わせ例
日ごとの区切りタイトル付きリスト表示
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
<?php the_date('Y年m月d日', '<h2 class="date-heading">', '</h2>'); ?>
<div class="post-item">
<h3><?php the_title(); ?></h3>
<p><?php the_excerpt(); ?></p>
</div>
<?php endwhile; ?>
<?php endif; ?>
the_date()のまとめ
the_date()
は、同じ日付の投稿を1つのまとまりとしてグループ化して表示したい場合に非常に有効な関数です。アーカイブページやニュース一覧で、「いつの投稿なのか」がひと目で分かる構成を実現するのに役立ちます。
ポイント
the_date()
は 同日内で最初の投稿にしか日付を表示しない- フォーマットや囲みタグを自由に指定できる
- 出力を抑えて値だけ取得したいときは
$echo = false
- 同日でも毎回出したいなら
get_the_date()
を使う