WordPressの日付を英語表記にする方法と日付タグまとめ

WordPressの日付を英語表記にする方法と日付タグまとめ

一覧ページに表示する日付を英語表記にする際にいろいろ調べたので、覚え書きとして日付のテンプレートタグや英語表記についてまとめてみました。

日付のフォーマットの設定

WordPressの日時は、管理画面「一般」の「日付のフォーマット」と「時刻フォーマット」で設定したフォーマットで表示されます。

日付のフォーマットの設定

管理画面で設定したデフォルトのフォーマット以外で表示したいときは、パラメータを指定すると指定したフォーマットで表示されます。

<?php the_date( 'Y年m月d日' ); ?>

と書くと
2013年10月21日
と表示されます。

日付の表記の仕方はWordPress Codexに書かれています。

日付と時刻の書式 | WordPress Codex 日本語版

日付を表示するテンプレートタグ

the_time

記事の投稿日時を表示します。
デフォルトは時間だけの表示で、パラメータをいれると日時を表示します。
同じ日に複数の記事がある場合は、すべての記事に表示します。
英語形式は翻訳して表示します。

書式
<?php the_time( 'd' ); ?>
パラメータ 説明
d 日時のフォーマット。
デフォルトは管理画面で設定した時刻フォーマット。
記述例

時間をデフォルトのフォーマット(21:00)で表示する

<?php the_time(); ?>

2013年10月21日 月曜日と表示する

<?php the_time( 'Y年m月d日 D曜日' ); ?>

日付を管理画面で設定したフォーマット(2013/10/21)で表示する

<?php the_time( get_option( 'date_format' ) ); ?>

get_option( 'date_format' )は管理画面「一般」で指定している日付のフォーマットの値を取得します。

テンプレートタグ/the time | WordPress Codex 日本語版

the_date

記事の投稿日時を表示します。
同じ日に複数の記事がある場合は、最初の記事にだけ表示します。
英語形式は翻訳して表示します。

書式
<?php the_date( 'format', 'before', 'after', echo ); ?>
パラメータ 説明
format 日時のフォーマット。
デフォルトは管理画面で設定した日付フォーマット。
before 日時の前に表示する文字やコード。
after 日時の後に表示する文字やコード。
echo true 日時を表示する。(デフォルト)
false 日時をPHPで使用できる値として取得する。
記述例

日付をデフォルトのフォーマット(2013/10/21)で表示する

<?php the_date(); ?>

2013年10月21日 月曜日と表示する

<?php the_date( 'Y年m月d日 D曜日' ); ?>

the_date()は同じ日に複数の記事がある場合は、最初の記事にのみ日時を表示します。

テンプレートタグ/the date | WordPress Codex 日本語版

get_the_date

記事の投稿日時を表示します。
同じ日に複数の記事がある場合は、すべての記事に表示します。
英語形式は翻訳して表示します。

書式
<?php get_the_date( 'd' ); ?>
パラメータ 説明
d 日時のフォーマット。
デフォルトは管理画面で設定した日付フォーマット。
記述例

日付をデフォルトのフォーマット(2013/10/21)で表示する

<?php echo get_the_date(); ?>

2013年10月21日 月曜日と表示する

<?php echo get_the_date( 'Y年m月d日 D曜日' ); ?>

get_the_date()で日時を表示するときはechoを記述します。

テンプレートタグ/get the date | WordPress Codex 日本語版

日付を英語表記で表示する方法

get_post_time

記事の投稿日時を表示します。
同じ日に複数の記事がある場合は、すべての記事に表示します。
英語形式は翻訳せずに表示します。

書式
<?php get_post_time( 'd', 'gmt', 'post', 'translate' ); ?>
パラメータ 説明
d 日時のフォーマット。
デフォルトは U(1970年1月1日0時0分0秒からの秒数)。
gmt true グリニッジ標準時の時刻で表示する
false タイムゾーンで設定してある地域の時刻で表示する(デフォルト)
post 指定した投稿ID、投稿データの日時を表示する。
指定しないときは現在の投稿の日時を表示する。(デフォルト)
translate true 英語形式を翻訳する。
false 英語形式を翻訳しない。(デフォルト)
記述例

2013年10月21日と表示する

<?php echo get_post_time( 'Y年m月d日' ); ?>

2013年10月21日 月曜日と表示する

<?php echo get_post_time( 'Y年m月d日 D曜日', '', '', true ); ?>

October 21, 2013と英語表記で表示する

<?php echo get_post_time('F d, Y'); ?>

get_post_time()で日時を表示するときはechoを記述します。

the_time、the_date、get_the_dateは日時を翻訳して表示するけど、get_post_timeはデフォルトでは翻訳されないので、デザインで部分的に英語表記にしたいときはget_post_timeを使うと簡単そうです。

Template Tags/get post time | WordPress Codex(英語)

フィルターフックを使用する

日本語環境で日付フォーマットの設定を英語表記にするフィルターフックです。
テーマのfunctions.phpに以下の記述を追加するだけで、簡単に英語表記になります。

functions.php

add_filter( 'date_i18n', 'ja_date_i18n', 10, 4 );
function ja_date_i18n( $date , $req_format, $i, $gmt){
	if( defined('WPLANG') and WPLANG == 'ja' ) {
		// formatがcの場合、+00:00を+09:00に修正する
		$format= sprintf( '%1$02d:00', get_option( 'gmt_offset' ) );
		$date = str_replace( '+00:00', '+'.$format, $date );
		
		// 日本語環境で、フォーマットに英語表記を使用する
		if ( preg_match( '![SlDFM]!', $req_format ) ) {
			return apply_filters( 'ja_date_i18n', date( $req_format, $i ) );
		}
	}
	return apply_filters( 'ja_date_i18n', $date );
}

WordPress日本語版 日付表示が、設定どおりに動作しない問題に対処する | WordPress Snippet

プラグイン「EnglishDate」を利用する

曜日と月を英語表記にしてくれるプラグインです。
使い方はプラグインをアップロードして有効化するだけ!
WordPress3.6.1でも問題なく使えました。

これだけではウィジットの月別アーカイブやカレンダーの表記が 2013年October となってしまうので、wp-includes/general-template.php ファイルを修正します。

月別アーカイブの表記をOctober, 2013と表示する

$text = sprintf(__('%1$s %2$d'), $wp_locale->get_month($result->month), $result->year);

'%1$s %2$d'」にカンマを加えて「'%1$s, %2$d'」に修正します。

$text = sprintf(__('%1$s, %2$d'), $wp_locale->get_month($result->month), $result->year);

カレンダーの表記をOctober, 2013と表示する

$calendar_caption = _x('%1$s %2$s', 'calendar caption');

'%1$s %2$s'」にカンマを加えて「'%1$s, %2$s'」に修正します。

$calendar_caption = _x('%1$s, %2$s', 'calendar caption');

コアファイルを修正するので、WordPressをアップデートするたびに general-template.php ファイルを修正しないと、表示が元に戻ってしまうので注意してください。

コアファイルを修正する以外の方法をご存知の方、教えて頂けると助かります!

日本語版WordPressの曜日・月表記を英語にする方法 | W.C.T_FEEL

WordPress >> 日付表示を英語表記にする。 | CHROMANOTE

その他の方法

日付を英語表記にする方法は他にもwp-includes/locale.phファイルを修正する方法やfunctions.phpへ記述する方法もあります。

WordPress の月および曜日を英語表記にする | 小粋空間

WordPressの日付表示を英語表記+Webフォントでカスタマイズする | Ateitexe

最後に

日付の表記にもいろいろなテンプレートタグがあるので、目的によって使い分けるのがいいかなーと思います。

日付のテンプレートタグについては WordPressテンプレートタグ チートシート でも少し紹介しているので、よかったら見てみて下さい :)

参考にさせていただいたサイト・記事

1件のトラックバック

Top