このサイトではから、タイトル下に表示する「公開日」と「最終更新日」を、和暦を含む形で出力しています。
これは、こちらの和暦をショートコードで出力する方法を基に、西暦と和暦を混在させた形でショートコード化したものをテーマテンプレート上へ出力するようにしています。
ここで懸念事項になったのが、timeタグの取り扱い。
具体的には以下のようなタグのことです。
<time datetime="">日時を表示する記述</time>
WordPressに装備されている「投稿日」ブロックでもtimeタグは出力されており、検索エンジンはこれを参考に検索結果に表示する日付の参考としているようです(確信ではありません)。
西暦和暦混在のショートコードを作った当初は、WordPressのバージョン6.0.2以前では標準ブロックで出力できない「最終更新日」のみをtimeタグ付きで出力すればいいと考えたのですが、それだと、「投稿日」ブロックと両方でtimeタグが出力されてしまい、ひょっとすると何か悪影響があるのかと考え、「公開日」用の西暦和暦混在表示用ショートコードも追加して対応することとしました。
- 西暦和暦混在の「公開日」では、timeタグでの出力をしない
- 西暦和暦混在の「最終更新日」ではtimeタグを出力する(こちらが日付ですよ!と知らせる)
コードを公開しておきますので、このサイトと同じように、「公開日」と「最終更新日」を西暦和暦で表示したい方は参考にしてください。
本ページのコードを使って、テーマテンプレート内へショートコードを入れると、本ページ上部(タイトル下)のような表示ができます。
なお、コード流用される際は以下の点にご注意ください
- timeタグが双方に出力されてしまうので、標準の「投稿日」ブロックと最終更新日ショートコード両方を表示させないようにした方がいいです
- 公開日ショートコードのみを使用すると、timeタグが出力されませんので、検索エンジンに正確な日時が伝わらない可能性がありますから、必ず最終更新日ショートコードと両方使ってください。
本ページ掲載のコードを使用するときは
本ページで掲載しているコードは、以下に了承した上で使用ください
- コードは商用・非商用問わず自由に使っていただいて構いませんが、コード追加による不具合やトラブルが発生しても当方では一切責任を負いません
- コードは有効化しているテーマのfunctions.php、style.cssなどへ追加することで機能します。それらのファイルへの変更を行うことに不安のある方は使用しないでください
- コードは本ページの公開日時点で私の環境において動作したものです。WordPressバージョン他環境の違いによって動作しないことがあります
- コードは、セキュリティ、コードの正確さなどにおいて完全なものではありません。中には紹介するコードを簡略化するために省略している部分があるものもありますので、ご自身でコードを十分に検証し、必要な部分の編集を行った上で使用するようにしてください
- 掲載しているのは参考コードです。自身の環境に合わせるための編集はご自身で対応いただく必要があります(コメント欄等から質問いただいても基本回答は致しません)
- 掲載しているコードの転載を禁じます(SNSで紹介いただいたり、本ページへのリンクを張っていただくことは大歓迎です)
公開日を西暦和暦で表示させるショートコードの作り方
以下のコードを子テーマのfunctions.php(こちらで配布しているTT2子テーマを使用している前提です)へ以下のコードを追加します。
/*** 公開日ショートコード ***/
/* 算出 */
function pwcn_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 pwcn_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 = pwcn_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','pwcn_sc_pub_wareki');
テーマエディタを起動し、個別投稿テンプレートのタイトル下など任意の場所へ、以下のショートコードを挿入してください。
[p-wareki]
通常ではあり得ませんが、公開日が最終更新日よりも後日の場合にはtimeタグを出力するようにしています
最終更新日を西暦和暦で表示させるショートコードの作り方
以下のコードを子テーマのfunctions.php(こちらで配布しているTT2子テーマを使用している前提です)へ以下のコードを追加します。
/*** 最終更新日ショートコード ***/
/* 算出 */
function pwcn_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 pwcn_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 = pwcn_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','pwcn_sc_modified_wareki');
テーマエディタを起動し、個別投稿テンプレートのタイトル下など任意の場所へ、以下のショートコードを挿入してください。
[m-wareki]
公開日と最終更新日が同一、または、公開日よりも最終更新日が後日の場合にtimeタグを出力するようにしています
コメントを残す