このサイトではから、タイトル下に表示する「公開日」と「最終更新日」を、和暦を含む形で出力しています。

これは、こちらの和暦をショートコードで出力する方法を基に、西暦と和暦を混在させた形でショートコード化したものをテーマテンプレート上へ出力するようにしています。

ここで懸念事項になったのが、timeタグの取り扱い。

具体的には以下のようなタグのことです。

<time datetime="">日時を表示する記述</time>

WordPressに装備されている「投稿日」ブロックでもtimeタグは出力されており、検索エンジンはこれを参考に検索結果に表示する日付の参考としているようです(確信ではありません)。

西暦和暦混在のショートコードを作った当初は、WordPressのバージョン6.0.2以前では標準ブロックで出力できない「最終更新日」のみをtimeタグ付きで出力すればいいと考えたのですが、それだと、「投稿日」ブロックと両方でtimeタグが出力されてしまい、ひょっとすると何か悪影響があるのかと考え、「公開日」用の西暦和暦混在表示用ショートコードも追加して対応することとしました。

  • 西暦和暦混在の「公開日」では、timeタグでの出力をしない
  • 西暦和暦混在の「最終更新日」ではtimeタグを出力する(こちらが日付ですよ!と知らせる)

コードを公開しておきますので、このサイトと同じように、「公開日」と「最終更新日」を西暦和暦で表示したい方は参考にしてください。

本ページのコードを使って、テーマテンプレート内へショートコードを入れると、本ページ上部(タイトル下)のような表示ができます。

なお、コード流用される際は以下の点にご注意ください

  • timeタグが双方に出力されてしまうので、標準の「投稿日」ブロックと最終更新日ショートコード両方を表示させないようにした方がいいです
  • 公開日ショートコードのみを使用すると、timeタグが出力されませんので、検索エンジンに正確な日時が伝わらない可能性がありますから、必ず最終更新日ショートコードと両方使ってください。

公開日を西暦和暦で表示させるショートコードの作り方

以下のコードを子テーマのfunctions.php(こちらで配布しているTT2子テーマを使用している前提です)へ以下のコードを追加します。

/*** 公開日ショートコード ***/
/* 算出 */
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 '公開日:'.$y.'('.$yy.')年'.$m.'月'.$d.'日' ;
}

/* ショートコード */
function sample_sc_pub_wareki(){
	$pdate = get_the_time('Ymd');
	$mdate = get_the_modified_time('Ymd');
	$update_time = get_the_time('c');
	$time_class='<time class="entry-date-modified" datetime="'.$update_time.'">';
	$time_class_end='</time>';
	$date = sample_wareki_publish_date();
	
	if($pdate > $mdate){
		return $time_class.'<span class="wareki">'.$date.'</span>'.$time_class_end;
	}else{
		return '<span class="wareki">'.$date.'</span>';
	}
}
add_shortcode('p-wareki','sample_art_sc_pub_wareki');

テーマエディタを起動し、個別投稿テンプレートのタイトル下など任意の場所へ、以下のショートコードを挿入してください。

[p-wareki]

通常ではあり得ませんが、公開日が最終更新日よりも後日の場合にはtimeタグを出力するようにしています

最終更新日を西暦和暦で表示させるショートコードの作り方

以下のコードを子テーマのfunctions.php(こちらで配布しているTT2子テーマを使用している前提です)へ以下のコードを追加します。

/*** 最終更新日ショートコード ***/
/* 算出 */
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 '最終更新日:'.$y.'('.$yy.')年'.$m.'月'.$d.'日' ;
}

/* ショートコード */
function sample_sc_modified_wareki(){
	$pdate = get_the_time('Ymd');
	$mdate = get_the_modified_time('Ymd');
	$update_time = get_the_modified_time('c');
	$time_class='<time class="entry-date-modified" datetime="'.$update_time.'">';
	$time_class_end='</time>';
	$date = sample_wareki_modified_date();

	if($pdate <= $mdate){
		return $time_class.'<span class="wareki">'.$date.'</span>'.$time_class_end;
	}else{
		return '<span class="wareki">'.$date.'</span>';
	}
}
add_shortcode('m-wareki','sample_sc_modified_wareki');

テーマエディタを起動し、個別投稿テンプレートのタイトル下など任意の場所へ、以下のショートコードを挿入してください。

[m-wareki]

公開日と最終更新日が同一、または、公開日よりも最終更新日が後日の場合にtimeタグを出力するようにしています