引用する日付をショートコードで定型化

投稿日:

 最近、(ジジィ)化してきて、時事などにケチをつけてはそれをブログに書いて楽しむようになってしまった。

 子供の頃、私の父はアニメや「8時だョ!全員集合」などの子供が見たがる番組など絶対つけてくれず、子供にとってはつまんないニュース番組などばかりつけていたもので、しかもそれを見て楽しんでいるというならまだしも、「なにがフェミニズムだ!!何が日教組だ!!」などと、どうでもいい他人のことに腹を立てはじめ、しまいには湯気を立てて激昂し、私にそこらの手近のものなど投げつけて八つ当たりするという、誠にもって迷惑な父であった。

 さすがに私はそこまではいかず、父のようにニュースを見て激昂するなどという人間にはならなかったが、どうでもいいニュースに勝手なコメントを加えてブツブツ言っているというところは、多少似ていると言えば言えるかもしれない。

 さて、時事にケチをつけるときは、だいたいニュースなどへのリンクを張っている。例えば、昨日の羽生結弦先生のニュースなら、

……というような書式で引用している。

 前から思っていたのだが、この引用するときの日付が気に入らない。上の例だと「2018年2月17日21時57分」という部分だ。これがマスコミ各社それぞれに、「年」「月」「日」が入ったり、「/」区切りだったり、「-」区切りだったり、時間が入ったり入らなかったりして、不統一である。

 それより何より最も気に入らないのが、年号が全部「西暦」であることだ。和暦を付記すべきだ。……いいや、違うッ!。和暦に西暦を付記すべきである。

 こんなこと、気にしなければいいだけの話なのだが、これをまた、「このブログは日付の書式が不統一だ」などと、私のブログを見てケチをつけてくる人がいるのである。

 これは手作業でひとつづつ書き直すようなことではない。こんな機械的なことは、機械がやるべきだ。

 何か、日付を正規化するプログラムでも書いて、そのAPIでも公開してやろうかい、などとも思ったが、「和暦に西暦付記でないと嫌だ」などという変な人は世の中私ぐらいだろうと思うし、何もAPIを世の中に提供まですることもあるまい。ここはひとつ、WordPressの機能の、「ショートコード」というのを活用して、記事を書くときにチョコッとおまじないを書き足せば、いろいろな日付が私の認める日付書式(俺様用日付)に書き換わって表示される、というふうにすることにした。

 WordPressはPHPで作られている。そのため、ショートコードを作るには、PHPでプログラムを書けばそれでよい。PHPは簡単で、誰でもがWordPressに機能追加することができる。

 具体的には、WordPressのインストールディレクトリの下の「wp-content/themes」の下にある、自分が使っているテーマの中の「functions.php」の末尾にPHPでプログラムを書いてやるのだ。「子テーマ」を作成して使用している場合は、その子テーマの下のfunctions.phpにプログラムを書き加える。

 私は子テーマを使用しているので、その下にあるfunctions.phpの末尾に、次のように書き足した。

/********************************************************************************
 * regdate();
 *   平成30年2月18日(日)11時00分~
 *   佐藤俊夫
 *   ネットのマスコミニュースの日付などをコピペする際、書式がばらばらであるので、
 *   これを私こと佐藤俊夫が認める日付書式に変換するショートコード 
 ********************************************************************************/
function regdate( $arg, $content = null ) {
	$content = mb_convert_kana($content, "n");	//  全角数字はすべて半角数字に
	$content = preg_replace("/$/", "/", $content);	//  処理の単純化のため、末尾に例外なく「/」を付加(日付のみで数字で終了する文字列に対応)
	$content = preg_replace("/^[^0-9][^0-9]*/", "", $content);	//  行頭の数字以外の文字はすべて削除
	$content = preg_replace("/[^0-9][^0-9]*/", "/", $content);	//  数字以外の文字を全て「/」に置換
	$content = preg_replace("/[^0-9]([0-9])[^0-9]/", "/0$1/", $content);	//  数字1文字のみの場合は「0」をパディング
	$content = preg_replace("/^([0-9])[^0-9]/", "0$1/", $content);
	$content = preg_replace("/^([0-9]{2}[^0-9])/", date("Y")."/$1", $content);	//  冒頭が2桁の数字のものは、今の西暦を強制付加する。
	$content = preg_replace("!^([0-9]{4}/[0-9]{2}/[0-9]{2})/$!", "$1/00/00/", $content);	//  年号と日付しかないと見られるものは、00時00分とし、末尾に付加する。
	$content = preg_replace("!/$!", "", $content);	//  末尾の「/」をサニタイズ
	$content = preg_replace("!/([0-9][0-9])/([0-9][0-9])$!", " $1:$2", $content);	//  末尾の数字4つは時間とみなして「 12:34」の形に。
	$unixtime_content = strtotime($content);	//  「strtotime」が高性能なので、一旦丸投げしてUNIXタイムスタンプにする。
	//  元号と和暦年を取得して付加
	$Y = date("Y", $unixtime_content);
	$Ymd = date("Ymd", $unixtime_content);
	if ($Ymd >="18680125" && $Ymd <= "19120729") {
		$gg = "明治";
		$yy = $Y - 1867;
	} elseif ($Ymd >= "19120730" && $Ymd <= "19261224") {
		$gg = "大正";
		$yy = $Y - 1911;
	} elseif ($Ymd >= "19261225" && $Ymd <= "19890107") {
		$gg = "昭和";
		$yy = $Y - 1925;
	} elseif ($Ymd >= "19890108") {
		$gg = "平成";
		$yy = $Y - 1988;
	} else {
		//  明治以前の場合は一律「皇紀」を用いることとする。
		$gg = "皇紀";
		$yy = $Y + 660;
	}
	if($yy == 1){
		$yy = "元";
	}
	$content = $gg.$yy."年".date("(Y)m月d日(", $unixtime_content);
	//  日本語曜日を取得して付加
	$sevendays = array("日","月","火","水","木","金","土");
	$content .= $sevendays[date("w", $unixtime_content)].")".date("H時i分", $unixtime_content);
	//
	return $content;
}
add_shortcode('date', 'regdate');

 「functions.php」に上のように書き加えたら、よく確認して保存する。

 さて、このショートコードの利用である。

 例えば最初のほうで例に述べた朝日新聞の記事の場合、そのまま日付をコピペすると次の赤字で記した部分のようになってしまい気に入らないことは、先述の通りである。

ショートコードを使わない場合の記事ソース
<ul><li> <a href=”https://www.asahi.com/articles/ASL2K52X2L2KULZU004.html” rel=”noopener” target=”_blank”>羽生結弦、自分に勝った孤高の金「僕はアニメの熱血系」</a>(朝日、2018年2月17日21時57分)</li></ul>

 しかし、今回作ったショートコードを使えば、簡単に書式を一定化できる。次の通りだ。

ショートコードを使った場合の記事ソース
<ul><li> <a href=”https://www.asahi.com/articles/ASL2K52X2L2KULZU004.html” rel=”noopener” target=”_blank”>羽生結弦、自分に勝った孤高の金「僕はアニメの熱血系」</a>(朝日、[date]2018年2月17日21時57分[/date])</li></ul>

 WordPressは、このように簡単でわずかなプログラムを書き加えるだけで自分の好みに改変することができる。非常に便利であり、ユーザ・フレンドリであると言える。

 世の中には、「日付に和暦や元号を使う合理性なんてまったく認められない。こんなものはやめるべきだ」などと言い立てている変な人がいるようだが、そういう人は私のように、自分の環境だけ変えればよい。私と同じように、自分の環境だけ、逆に西暦でもイスラム歴でも、勝手に好きなように使えるようにすればよい。そんなもの、上記で実践して見せたように大した手間ではない。

投稿者: 佐藤俊夫

 50代後半の爺。技術者。元陸上自衛官。2等陸佐で定年退官。ITストラテジストテクニカルエンジニア(システム管理)基本情報技術者

「引用する日付をショートコードで定型化」への1件のフィードバック

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください