ブログやSNSなど、パソコン上で見えるページの多くは、西暦で日付が表示されるのがスタンダードになってきましたが、ふと「今、令和何年だっけ?」となることありませんか(ない?)
ふと、ショートコードでWordPressで作った投稿や固定ページの公開日や最終更新日を簡単に元号で表示できたら..とコードを作りましたので、参考コードとして公開します。
ショートコードで公開日や最終更新日を和暦で表示する方法
以下に紹介するコードをテーマのfunctions.phpへ追加し、コード下に示すショートコードを投稿本文など任意の場所へ入れるだけで、和暦を出力できるようになります。
元号は、私が調べた限りの情報、また、私の認識では、〇月〇日を境に旧元号(時代)、新元号(時代)が切り替わるようなので、ここで紹介するコードも日付で切り分けるようにしています
ブロックテーマの一覧類(アーカイブなど)では使用できません(先頭表示される投稿の日付がすべてのリストに表示されます)のでご注意ください
ショートコードで出力すると、()の中に和暦が表示されるようにしています。必要に応じてコードを修正して、出力内容を変更してください。
公開日の和暦をショートコードで出力
テーマのfunctions.phpへ追加するコード
/*** 公開日ショートコード ***/
/* 算出 */
function sample_wareki_publish_date(){
$date = get_the_time('Ymd');
$y = get_the_time('Y');
$m = get_the_time('n');
$d = get_the_time('j');
//昭和 19261225-19890107
if($date <= 19890107){
if($date >=19251225 && $date <=19291231){
$yy = "昭和元年";
}else{
$yy = "昭和" . ( $y - 1925 ) . "年";
}
//平成 19890108-20190430
}elseif($date >=19890108 && $date <=20190430){
if($date >=19890108 && $date <=19891231){
$yy = "平成元年";
}else{
$yy = "平成" . ( $y - 1988 ) . "年";
}
//令和 20190501-
}elseif($date >=20190501){
if($date >=20190501 && $date <=20191231){
$yy = "令和元年";
}else{
$yy = "令和" . ( $y - 2018 ) . "年";
}
}
return $yy. $m . "月" . $d ."日";
}
/* ショートコード */
function sample_sc_pub_wareki(){
$date = sample_wareki_publish_date();
return '<span class="wareki">('.$date.')</span>';
}
add_shortcode('p-wareki','sample_art_sc_pub_wareki');
出力するためのショートコード
[p-wareki]
最終更新日の和暦をショートコードで出力
テーマのfunctions.phpへ追加するコード
/*** 最終更新日ショートコード ***/
/* 算出 */
function sample_wareki_modified_date(){
$date = get_the_modified_time('Ymd');
$y = get_the_modified_time('Y');
$m = get_the_modified_time('n');
$d = get_the_modified_time('j');
//昭和 19261225-19890107
if($date <= 19890107){
if($date >=19251225 && $date <=19291231){
$yy = "昭和元年";
}else{
$yy = "昭和" . ( $y - 1925 ) . "年";
}
//平成 19890108-20190430
}elseif($date >=19890108 && $date <=20190430){
if($date >=19890108 && $date <=19891231){
$yy = "平成元年";
}else{
$yy = "平成" . ( $y - 1988 ) . "年";
}
//令和 20190501-
}elseif($date >=20190501){
if($date >=20190501 && $date <=20191231){
$yy = "令和元年";
}else{
$yy = "令和" . ( $y - 2018 ) . "年";
}
}
return $yy. $m . "月" . $d ."日";
}
/* ショートコード */
function sample_sc_modified_wareki(){
$date = sample_wareki_modified_date();
return '<span class="wareki">('.$date.')</span>';
}
add_shortcode('m-wareki','sample_sc_modified_wareki');
出力するためのショートコード
[m-wareki]
テーマテンプレート内でショートコードを出力するには
クラシックテーマを使っているサイトで、テーマテンプレートにショートコードを出力する場合は以下のコードのいずれかを使用し、「ショートコード」の部分を「p-wareki(公開日の場合)」「m-wareki(最終更新日の場合)」へ変更します。
<?php echo do_shortcode('[ショートコード]'); ?>
echo do_shortcode('[ショートコード]');
テンプレートの書き方に応じて上下のコードを使い分ける必要があります
ちなみに、私が勝手に作っているTT2(Twenty Twenty-Two)テーマのデモサイトでは、現在、上記のコードをさらにカスタマイズして、個別投稿(こちらなど)のタイトル下に、西暦と和暦混在の公開日・更新日を表示させています。
おまけ 元号が変更されるタイミングについて
今まであまり気にする機会に遭遇することがなかったため気にしていませんでしたが、元号は日付で変わるようです。
例えば、平成になったのは1989年1月8日なので、正確には平成1年(平成元年)1月1日~1月7日は存在しない日ということになり、令和になったのは2019年5月1日なので、正確には令和1年(令和元年)1月1日~4月30日は存在しないということになるのです。
このページで紹介するような、WordPressの日付を和暦変換して出力する方法を紹介するページが結構ありますが、そのほとんどが日付を意識していないようなので、それらを参考に機能追加すると、ひょっとしたら存在しない日付を知らず知らずの間に表示してしまっているのかも知れませんから、一度確認してみてください。
厳格に存在するか、存在しないかについて、可能な限り調べてみたものの、公的にも私的にもきちんと書かれているものがありませんでしたので、存在しない日があるというのはあくまでも私見です
各元号の開始日・終了日
明治時代から令和時代までの各元号の開始日と終了日を調べました。
公的に発表されているものが見つからなかったため、表下にリンクで掲載しているサイトの情報を元にしています
元号 | 開始日 | 終了日 |
---|---|---|
明治 | 1868年9月4日 | 1912年7月29日 |
大正 | 1912年7月30日 | 1926年12月24日 |
昭和 | 1926年12月25日 | 1989年1月7日 |
平成 | 1989年1月8日 | 2019年4月30日 |
令和 | 2019年5月1日 |
日付を調べるため参考にしたサイト・ページ