はじめに
WordPressの標準機能では日付は西暦で表示されますが、日本国内向けのサイトや公的な内容を扱うブログでは、和暦(令和・平成など)で表示したいケースがあります。
この変換には、PHPに標準搭載されているIntlDateFormatter(国際化用日付フォーマッター)というライブラリを使用し日付を変換します。
この記事では、この方法について説明します。
完成イメージ

実装手順
以下のコードをfunctions.phpに追加します。
add_filter('get_the_time', function ($the_time, $format, $post) {
if (is_admin() || !$post) {
return $the_time;
}
$post_obj = get_post($post);
if (!$post_obj || empty($post_obj->post_date)) {
return $the_time;
}
// 和暦フォーマットの設定
$formatter = new IntlDateFormatter(
'ja_JP@calendar=japanese', // ロケールとカレンダーの種類
IntlDateFormatter::FULL, // 日付スタイル
IntlDateFormatter::NONE, // 時刻スタイル
'Asia/Tokyo', // タイムゾーン
IntlDateFormatter::TRADITIONAL, // 暦の種類
'Gy年M月d日' // 出力形式(G: 元号, y: 年)
);
// DateTimeオブジェクトを作成して和暦に変換
$date_obj = new DateTime($post_obj->post_date);
$japanese_date = $formatter->format($date_obj);
return $japanese_date ?: $the_time;
}, 99, 3);
さいごに
今回紹介した方法を使えば、PHPの標準機能を活用して、テーマ内の日付表示を一括で和暦に変更できます。
自前で元号の計算ロジックを書く必要がないため、保守性が高く、将来新しい元号に変わった際もサーバー側のPHPが更新されれば自動で対応できるのが大きなメリットです。

