日本語版WordPressで日付を英語表記する方法

Customize
スポンサーリンク

投稿日を英語表記する

WordPressの日付や時刻に関するテンプレートタグについて

WordPressには日付や時刻に関するテンプレートタグや関数が多数用意されています。

  • the_time()
  • get_the_time()
  • the_date()
  • get_the_date()
  • .etc

など色々ありますが、
多くのテーマでは投稿の公開日を表示する処理に

  • 投稿の公開時刻を表示する the_time()
  • 投稿の公開日を取得する get_the_date()

を使うことが多いようです。

表示と取得の違いについてはここでは触れませんが、このテンプレートタグ?に日付・時刻に関するアルファベットの引数(パラメータ ※PHPで使われているのと同じ)を渡す事で、その引数に起因する日付時刻の表示や取得ができます。

詳しくはこちら

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

通常であれば引数に ‘F’ を指定すると「January」~「December」のように英語のフルスペルで表示されます。
また ‘M’ を指定すると「Jan」~「Dec」のように3文字形式で表示されます。

しかし、日本語版WordPressでは、上記の関数を使用すると月や曜日などの表記が翻訳され強制的に「○○月」として表示されます。

それではどのようにして英語表記にするのか?
以下に具体的な方法を記述します。

get_post_time()を使う

月や曜日が強制的に翻訳されてしまうのを回避し、英語表記させるには get_post_time() を使用します。

使用しているテーマファイルの

<?php the_time( '現在のフォーマット' ); ?>

または、

<?php echo get_the_date( '現在のフォーマット' ); ?>

※「’現在のフォーマット’」はご自身の設定や使用しているテーマにより異なります。
となっている箇所を探し

のようにに書き換えます。

これで日付の表示が「April 13th, 2017」のように表示されるはずです。

ただ、この方法だと後から日付のフォーマットを変更したい、あるいは日本語に戻したいと思った場合、また該当箇所を探し出し、テーマファイルを直接書き換える必要があります。

そこで、毎回直接書き換える必要がないようにするには、一般設定でセットしたフォーマットを取得する get_option(‘date_format’) を引数に指定し次のように書き換えます。

このままでは現在設定中のフォーマットで出力されるので、管理画面の 設定 > 一般 > 日付のフォーマット でカスタムを選択し、テキストボックスに「F jS, Y」等と記入します。

これで同様に日付の表示が「April 13th, 2017」のように表示され、変更したい時は管理画面の一般設定から自由にフォーマットを変更できるようになります。

フィルターフックを使って簡単に実装する方法

これまで説明してきた方法は、テーマファイルの該当箇所を探し出しソースを書き換える必要があるため、1つのテーマをカスタマイズしながら長く使う人や殆ど自作のテーマを使っている人には、1度書き換えてしまうだけなので良いかもしれません。

しかし、WordPressの初期テーマ「Twentyシリーズ」のように毎年新作が出るたびにテーマを変える人や子テーマ運用している人は、テーマの変更や親テーマのアップデートのたびに書き換え作業が発生するため、該当箇所が複数ある場合などは見落しによる修正漏れが発生する可能性があります。

そこで、フィルターフックを使って簡単に実装する方法を紹介します。

「Twentyシリーズ」の場合は functions.php に以下の記述を追加してください。

WordPressで提供している「Twentyシリーズ」では get_the_date() を使って投稿日を取得しているので(シリーズ全部じゃないかも。。)、これをフックとしてmy_date_format() を実行。get_post_time(get_option( ‘date_format’ ))で取得した日付を返します。

これで管理画面の一般設定から自由にフォーマットを変更できるようになります。

このサイトでも使用している「Simplicity2」の場合は、子テーマの functions.php (子テーマ運用していない人はテーマ本体の functions.php )に以下の記述を追加。

「Simplicity2」では the_time() を使って投稿日を表示しているので、これをフックとしてフィルターを通します(my_date_format()を実行します)。
また、表示・非表示判別を get_theme_text_date_format() という関数で行い、表示の場合に管理画面で設定しているフォーマットを返すというような処理をしているようです。(たぶん。。。曖昧な表現ですが、なんとなく試したら上手くいったので実はじっくりソースを読んでおりません。。。)

関数名・引数に若干違いがありますがやっていることは同じです。

更新日も英語表記にする

更新日を英語で表記するためには、投稿の最終更新時刻(と日付)を取得できる get_post_modified_time() を使います。

このサイトでも使用している「Simplicity2」では更新日を表示するために get_mtime() という関数が使用されていますが、この関数はWordPressのテンプレートタグではなく、フィルターがかけられない?(この関数をフックとしてmy_mdate_format()が実行されない)ので、この get_mtime()関数内部で使われている(であろう) get_the_modified_time() をフックとしてフィルターを通してみました(my_mdate_format()を実行してみました)。

結果は成功で無事更新日も英語表記されたのでそのコードを紹介。

このサイトでも使用している「Simplicity2」の場合は、子テーマの functions.php (子テーマ運用していない人はテーマ本体の functions.php )に以下の記述を追加。
記述場所はどこでも結果は同じだと思いますが、解り易いので前述の「投稿日を英語で表示」のコードのすぐ下あたりに

と記述します。
これで更新日も英語表記となります。

ちなみに、このコードを他のテーマでも使える汎用性のあるかたちにすると以下のような感じでしょうか?

‘get_the_modified_time’ の部分は使用しているテーマによって変わります。
get_the_modified_time()は時間も取得できるため、更新日時の取得で比較的多く使われているようですが、更新日を取得または表示する関数は他に

  • get_the_modified_date()
  • the_modified_time()
  • the_modified_date()

などがあります。

日本語翻訳ファイル ja.po ja.mo を書き換える

この方法は wp-content/languages/ フォルダ内にある ja.po ファイルを書き換えて ja.mo へコンパイルするというもの。

具体的な方法は

401 Unauthorized

が参考になると思います。

ただし、最新バージョンのWordPressでは初期設定で本体のマイナーアップデートと翻訳ファイルが自動更新される仕様になっているので、この方法で英語表記させる為には自動更新の機能を停止する必要があります。また ja.po ファイル → ja.mo ファイルの変換にはPoeditなどの専用ソフトが必要になります。

locale.phpを書き変える

時々この事について触れている記事を見かけますが、数年前はこの方法で英語表記できた記憶があります。
しかし、現時点の最新バージョンではこの方法ではうまく機能しませんでした。
また、専門的な知識の無い人がWordPress本体のファイルを変える事はサイト運営上好ましくないと思うので、この方法は推奨しません。

WordPress現時点での最新バージョン4.7.3では wp-includes/locale.php を修正しても機能しません。
wp-includes/class-wp-locale.php の129行目あたりからのinit()が該当する部分で、この中の __(‘○○○’)または_x( ‘○○○’, ‘genitive’ ) を全て’○○○’に変更
以下該当箇所

コメント

タイトルとURLをコピーしました