the_date()

目次

the_date()とは?

WordPressの the_date() 関数は、投稿が公開された「日付」をテンプレート上に表示するためのテンプレートタグです。ただし、get_the_date() と異なり、同一日付の投稿が連続している場合には1回しか出力しないという特徴があります。アーカイブページやブログ一覧などで「日付ごとに区切って表示したい」といった場面で活用されます。

the_date()の基本構文

the_date( string $format = '', string $before = '', string $after = '', bool $echo = true )

the_date()の引数の説明

引数説明
$formatstring日付の表示形式(例:'Y年n月j日')。未指定時は管理画面の設定が使用される。
$beforestring出力する日付の前に追加する文字列。
$afterstring出力する日付の後に追加する文字列。
$echobooleantrue なら表示、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() を使う
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

初めてホームページを作成したのは1996年。
2000年よりフリーランスで主に中小企業、学校、各種公的団体、個人事業主のWordPressを活用したホームページ制作を行っています。WordPressテーマはそれぞれのクライアントに合わせて作成しています。
WordPressを活用したサイト運営のための情報発信をしていきます。

目次