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

投稿日:

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

 子供の頃、私の父はアニメや「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は、このように簡単でわずかなプログラムを書き加えるだけで自分の好みに改変することができる。非常に便利であり、ユーザ・フレンドリであると言える。

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

WordPress画像挿入時動作のカスタマイズ

投稿日:

 愛用中のWordPress。書きやすいし、気に入っている。

 しかし、記事に画像を挿入するときの動作が気に入らない。WordPressの画像の挿入機能は、タテヨコをimgタグのwidth・height両属性で書いてくる。つまり

「<img …… width=”320px” height=”240px” …… >」

……というふうに書きこんでくるのだが、これが気に入らないのである。

 これだと、ブラウザのウィンドウ・サイズなどを変更したり、モバイルや携帯で表示させたときに画像がハミ出したり、周囲の文字が収まりきらず、おかしな具合に画面が散らかったりしてしまう。リサイザブルでないわけである。ここは

「<img …… style=”width:50%;” …… >」

……等であってほしい。こういうふうであれば、ウィンドウのサイズを小さくしたブラウザで表示しようが、携帯やモバイルで表示しようが、必ず表示領域の半分の大きさで画像が表示されるわけである。

 しかし、現行のWordPressはそういうふうにはなっていないし、そういうふうにユーザ設定を追加する機能もない。

 それで、画像を挿入するときには、毎回この「<img …… width=”320px” height=”240px” …… >」というタグの「width……height……」というところを手で削り、「style=”width:50%;”」と書き直していた。

 しかし、毎回毎回、じつに面倒臭い。

 そこで、意を決してカスタマイズした。

 この「width」「height」を書き込んでいるのは、WordPressインストールディレクトリの下の「wp-admin/includes/media.php」というファイルである。

 このファイルの末尾に、次のように書き加える。

function remove_hwstring_from_image_tag( $html, $id, $caption, $title, $align, $url, $size ) {
	list( $img_src, $width, $height ) = image_downsize($id, $size);
	$hwstring = image_hwstring( $width, $height );
	$html = str_replace( $hwstring, ' style="width:50%;" ', $html );
	return $html;
}
add_filter( 'image_send_to_editor', 'remove_hwstring_from_image_tag', 10, 7 );

 これで、邪魔くさいwidth・heightの代わりに幅50%のスタイルが無理やり書き込まれる。

 この改良に当たり、次のサイトを参考にさせていただいた。

 ただ、これをやっちまうと、WordPressのアップデートがあるたびにこのファイルをカスタマイズしなければならないわけである。うーん。……ま、いいか。

ブログのページIDが面白いことに

投稿日:

 ブログをWordPressに乗り換えて(しばら)()つ。いろんな部分が気に入っているが、記事のIDがデフォルトではシンプルなナンバーであることなども好きだ。

 そう思っていてふと見ると、この記事のIDは「19999」である。

 ずいぶん書き殴ったものだな、と思う。

 本当はこんなに記事は書いておらず、以前一度インポートしたTwitterでのツイートのまとめエントリを消しているのでこうなっている。

古い方のブログのコピーを消す

投稿日:

 15年ほど前、自宅を建築した際にその記録をHTMLで書き、OCNのホームページサービス「Page ON」を使用して公開した。

 日々の変化事項などは、その中に日誌風に書き加えていたが、そうするうち、当時流行しだした「ブログ」サービスをOCNもやりはじめた。「ブログ人」だ。Movable Type ~ TypePadを活用したサービスだった。

 当時はいろいろ面白い試みもなされており、無料だったので私もそれを使うようになった。「Web2.0」などと言うことが当時言われており、スタティックで一方向だったWebが、ブログのトラックバックPingシステムにより双方向リンクを持てるようになったことが、私にとっても目新しかった。

 10年以上「ブログ人」を使っていたが、3年前、Page ONとともにサービスが終了してしまった。

 サービスが終了する前に、見たままを残しておこうと思い、wgetで丸ごとスナップショットをとった。

 その後、一時Gooブログなどにも移行してみたが、自由でないのが気に入らず、思ったように書けないのが不便なので、意を決してドメインを立て、レンタルサーバを借り、WordPressに移行した。それがこのブログだ。

 一方、レンタルサーバの容量には余裕があったので、wgetで丸ごとコピーした古い方のブログもそこに丸ごと放り込み、ずっと公開していた。

 しかし、記事そのものはこのブログにもインポートしており、並立の状態にあった。

 無駄だな、とも思ったので、意を決して古いブログのバックアップの公開はやめることにした。

WordPress 4.8.3

投稿日:

Jetpackが5.1にup

投稿日:

 このブログでもFacebookやTwitterへのクロスポストなどに愛用しているプラグイン「Jetpack」、目覚ましいスピードでバージョンアップが続けられ、5.1にアップデートされた。セキュリティスキャンやバックアップなどの機能に改善があったようだ。

WordPress + Jetpack と、Facebookの連携の調子が悪い

投稿日:

 標記。

 なんだか、朝から2~3件のクロスポストの調子が悪い。なんだろう。

WordPress 4.7.3–ja

投稿日:

 WordPress、アップデート。4.7.3–jaとなる。

 けっこうアップデートのサイクルが速いなあ。

WordPressの脆弱性(4.7.0と4.7.1)

投稿日:

 ウチは先週、4.7.2がリリースされ次第アップデートしたので心配ないが、改ざんされているサイトも多いというネット噂を目にした。

引用の仕方とblockquote

投稿日:

 このブログはよく「引用」をしている。

 「引用」は著作権法第32条で認められており、れっきとした「法定コピペ」であるが、当然のことながら原文をコピペしておけばそれでいいというものではない。約束事が決まっているのだ。それは著作権法の条文にある「公正な慣行」にあたるもので、いろいろと作法がある。引用箇所がはっきりわかるようにカッコ書きや引用符などの約物(やくもの)(くく)ることや、出典、またそのページなどを明記すること、引用した分量に妥当性があることなどだ。争いごとにしたくなければ、それらをきちんと守ることだ。

 これまでにもこうした引用の作法を意識して守ってきたつもりなのだが、それに加えて、先日ふと学んだことがある。ウェブやブログについて書かれたサイトなどを見ていたところ、

「引用をするときは、ネットの場合、『blockquote』タグで括らないと、たとえば検索エンジンなどがその部分を引用と見なさず、他人が検索した時の要約文などに引用が引用として扱われずに転載されることなどにつながり、疑義を生じることになるから、引用箇所は見た目に判るようにする以外に、広義のセマンティックとして『blockquote』で括ることを励行すべきである」

……というような記事を見つけたのだ。

 これはなるほど、そのとおりだなあ、と思った。

 さっそくそのようにしようとしたのだが、ただ、WordPressのデフォルトのblockquoteのスタイルシートが気に入らない。あほのように大きい引用符、色・スタイル・ウェイトのどれをとっても読みづらい変なフォントなど、全部が嫌だ。

 そこで、「子テーマ」で「blockquote」を全部定義し直す。定義しなおしたこのブログの今の子テーマのスタイルシートが以下である。

blockquote {
	border: 2px solid #000000;
	color: #000000;
	font-size: 13px;
	font-size: 1rem;
	font-style: normal;
	line-height: 1.75;
	margin: 1em 0em 1em 2em !important;
	padding: 0.25em 1em 0.25em 1em !important;
}

 この時、少々コツがあった。マージンやパディング、ボーダーについて、後で読み込まれるスタイルがどうもあるようだ。ウェブは仕様として「後から読み込まれるスタイルが優先」ということがあるので、このままだと自分の思ったスタイルにならない。

 そこで、「!importantルール」というものを使う。上のスタイルシートの、下から2行分、プロパティの最後に「!important」という付け足しのあるのがそれである。こうすると、後から読み込まれる別のファイルのcssにかかわりなくこの設定になる。

 今までの「div」で見た目だけ整えていたやり方は下の通りだ。

 例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文

 これは、

<div style="margin-left:2em;border:solid 2px;padding:1em;"> 例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文</div>

……と、単に書いていただけだ。引用としての意味づけはしていない。

 これに対して、今回新しく定義したのが以下だ。

 例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文

<blockquote> 例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文例文</blockquote>

 見た目は全く変わらないが、これならブログ記事のソースもあっさりとして読みやすくなり、書きやすい。

 いずれにせよ、以前に書いた記事の「引用部分」を、できる限りこの「blockquote」で置き換えておかなければならない。