WordPressでブログやニュースサイトを構築する際、投稿された日付を表示することは、コンテンツの鮮度を読者に伝えるために非常に重要です。
WordPressには日付を表示するための関数がいくつか用意されていますが、中でも柔軟性が高く頻繁に利用されるのが the_time() 関数です。
PHPの基礎知識があれば、この関数を使いこなすことで、サイトのデザインに合わせた最適な日付フォーマットを自由に設定できます。
本記事では、the_time() の基本的な使い方から、実戦で役立つカスタマイズ方法、そして類似関数である the_date() との違いまで詳しく解説します。
2026年現在のモダンなテーマ開発においても、この関数の仕組みを理解しておくことは必須スキルと言えるでしょう。
the_time() の基本と役割
WordPressのテーマファイル内で、投稿の公開時刻や日付を出力するために使われるのが the_time() です。
この関数は、基本的には「WordPressのループ内」で使用することを前提として設計されています。
関数の定義と基本的な書き方
the_time() は、PHPの echo を行わなくても、直接ブラウザに日付や時刻を出力する性質を持っています。
最もシンプルな記述方法は以下の通りです。
<?php the_time(); ?>
このコードを記述した場合、出力結果はWordPressの管理画面にある「設定 > 一般」で指定した「時刻フォーマット」の設定に従います。
例えば、管理画面で時刻フォーマットが「g:i a」と設定されていれば、以下のような結果が得られます。
1:45 pm
しかし、実際のWebサイト制作では、管理画面の設定に依存せず、テンプレートファイル側で「2026年5月2日」といった特定の書式を指定したいケースがほとんどです。
その場合は、the_time() の引数に PHPの「日付フォーマット文字列」を渡すことで、表示を自在にコントロールできます。
the_time() と the_date() の決定的な違い
初心者の方が最初につまずきやすいポイントが、the_time() と the_date() の使い分けです。
どちらも日付を表示する関数ですが、その挙動には大きな違いがあります。
| 関数名 | 同一日に複数投稿があった場合の挙動 |
|---|---|
| the_time() | すべての投稿で日付・時刻を表示する |
| the_date() | 同じ日付の投稿が並ぶ場合、最初の投稿にしか表示されない |
the_date() は、同じ日に複数の記事が投稿されている場合、2番目以降の記事では日付が表示されないという特殊な仕様があります。
これは「一日の記事をグループ化する」という古いブログスタイルの名残です。
現代の多くのWebサイトでは、各記事にしっかりと日付を明記することが求められるため、特別な理由がない限りは the_time() を使用するのが一般的です。
もし「なぜかループ内で日付が消えてしまう」という現象に遭遇した場合は、the_date() を使っていないか確認してみましょう。
日付フォーマットの指定方法
the_time() の引数には、PHP標準の日付フォーマット文字を使用します。
これを組み合わせることで、日本語特有の表記や、欧米スタイルの表記など、あらゆる形式に対応可能です。
よく使われるフォーマット文字一覧
以下は、WordPressテーマ開発で頻繁に利用されるフォーマット文字のリストです。
| 文字 | 内容 | 例 |
|---|---|---|
| Y | 4桁の西暦 | 2026 |
| y | 2桁の西暦 | 26 |
| n | 先頭に0をつけない月 | 5 |
| m | 先頭に0をつける月 | 05 |
| j | 先頭に0をつけない日 | 2 |
| d | 先頭に0をつける日 | 02 |
| H | 24時間表記の時 | 13 |
| i | 分 (00〜59) | 45 |
| s | 秒 (00〜59) | 08 |
| l | 曜日の英語全称 | Saturday |
| D | 曜日の英語略称 | Sat |
実践的なコード例
具体的な表示パターンに合わせて、どのように記述するかを見ていきましょう。
1. 標準的な日本語表記 (年月日)
日本国内のサイトで最も多用される形式です。
<p>投稿日:<?php the_time('Y年n月j日'); ?></p>
投稿日:2026年5月2日
2. スラッシュ区切り (0埋めあり)
デザインを整えるために、月日の桁数を揃えたい場合に便利です。
<time><?php the_time('Y/m/d'); ?></time>
2026/05/02
3. 時刻まで詳細に表示
ニュースサイトや更新頻度の高いメディアなどで使用されます。
<span>公開日時:<?php the_time('Y.m.d H:i'); ?></span>
公開日時:2026.05.02 13:45
get_the_time() を使った高度な処理
the_time() は値を直接出力しますが、取得した日付を変数に代入したり、条件分岐に使いたい場合は get_the_time() を使用します。
PHP変数への代入
例えば、日付の数値によって処理を分けたい場合や、他の文字列と結合して加工したい場合には、以下のように記述します。
<?php
// 日付を文字列として取得
$posted_date = get_the_time('Ymd');
// 2026年以降の投稿かチェックする例
if ( $posted_date >= '20260101' ) {
echo '<span>NEW</span>';
}
?>
get_the_time() は値を return するだけなので、そのままでは画面に何も表示されません。
表示させたい場合は echo get_the_time('Y/m/d'); のように記述する必要があります。
HTMLの time タグとの併用
SEOやアクセシビリティの観点から、日付を表示する際は HTML5 の <time> タグを使用することが推奨されます。
この際、datetime 属性にはコンピュータが理解しやすい形式 (ISO 8601など) で日付を入れる必要があります。
<time datetime="<?php echo get_the_time('c'); ?>">
<?php the_time('Y年m月d日'); ?>
</time>
<time datetime="2026-05-02T13:45:00+09:00">
2026年05月02日
</time>
引数に 'c' を渡すことで、ISO 8601 形式のタイムスタンプが簡単に取得できます。
これは検索エンジンに正確な公開時間を伝えるためのベストプラクティスです。
投稿日と更新日を使い分けるカスタマイズ
Webサイトの運用において、記事を公開した日だけでなく、情報を最新に保つために「更新日」を表示したいという要望は非常に多いです。
WordPressでは the_modified_time() という関数を使うことで、最終更新日時を表示できます。
更新日がある場合のみ表示するロジック
投稿日と更新日が同じであれば「投稿日」のみを表示し、記事を修正した場合には「更新日」を表示させるコードを紹介します。
<div class="post-meta">
<span class="published">
公開日:<?php the_time('Y/m/d'); ?>
</span>
<?php if ( get_the_modified_time('Ymd') > get_the_time('Ymd') ) : ?>
<span class="updated">
(更新日:<?php the_modified_time('Y/m/d'); ?>)
</span>
<?php endif; ?>
</div>
このコードのポイントは、get_the_modified_time('Ymd') を使って日付を数値として比較している点です。
これにより、1秒でも更新が新しければ更新タグを表示するといった柔軟な制御が可能になります。
曜日の日本語表示に関する注意点
the_time('l') や the_time('D') を使うと、通常は「Saturday」や「Sat」といった英語表記になります。
これを日本語の「土曜日」や「(土)」にするには、いくつかの方法があります。
1. WordPressのデフォルト機能を利用する
WordPressは多言語対応が進んでいるため、the_time() ではなく date_i18n() という関数(または内部的にそれを利用する関数)を通じて表示すると、サイトの言語設定(日本語)に合わせた翻訳が行われます。
しかし、最も簡単なのは以下のように直接フォーマット文字を日本語で記述する方法です。
<?php the_time('Y年m月d日 (D)'); ?>
PHPの内部処理により、WordPressの設定が日本語であれば、この D は自動的に「土」のように変換されることが一般的ですが、サーバー環境やPHPのバージョンによっては英語のままになることがあります。
2. 確実な日本語曜日出力
環境に依存せず、確実に日本語の曜日を出力したい場合は、配列を用意して変換する手法がよく使われます。
<?php
$week = array('日', '月', '火', '水', '木', '金', '土');
$w = get_the_time('w'); // 0(日)〜6(土)の数値を取得
echo '(' . $week[$w] . ')';
?>
このように get_the_time('w') を活用することで、デザインの自由度が飛躍的に高まります。
the_time() を使う際のトラブルシューティング
ループの外で使用している
the_time() は、現在処理している投稿のIDを自動的に判別します。
そのため、WordPressのメインループ(while(have_posts()))の外で使用すると、意図しない日付が表示されたり、何も表示されなかったりすることがあります。
もしループ外で特定記事の日付を表示したい場合は、get_the_time() の第2引数に投稿IDを渡すか、get_post_time() を使用してください。
// ループ外でIDが123の投稿日を表示する
echo get_the_time('Y/m/d', 123);
タイムゾーンの設定ミス
「表示される時間が実際の投稿時間と9時間ズレている」という現象は、よくあるトラブルの一つです。
これは、WordPressの管理画面「設定 > 一般」の「タイムゾーン」が「東京」になっていないことが原因です。
WordPress内部ではUTC (世界標準時) で時間が保存されていますが、the_time() は管理画面で設定されたタイムゾーンに基づいて変換して出力してくれます。
プログラム側で修正するのではなく、必ず管理画面の設定を確認しましょう。
まとめ
WordPressの the_time() 関数は、単に時刻を表示するだけでなく、フォーマット文字を組み合わせることで自由自在に日付をカスタマイズできる非常に強力なツールです。
本記事で解説した重要ポイントを振り返ります。
- the_time() は同じ日付の投稿でも必ず出力されるため、
the_date()より推奨される。 - 引数に
'Y年m月d日'などのフォーマットを渡すことで、表示形式を指定できる。 - 取得して加工したい場合は
get_the_time()を使用する。 - SEO対策として
<time>タグとdatetime属性を適切に設定する。 - 更新日の表示には
the_modified_time()を活用する。
これらの機能を理解し、適切に使い分けることで、ユーザーにとっても検索エンジンにとっても親切な、情報鮮度の高いWebサイトを構築することができます。
2026年のWeb制作シーンにおいても、こうした基礎的な関数の深い理解は、高品質なテーマ開発の土台となるでしょう。
ぜひ自身のプロジェクトで活用してみてください。
