今回のJetpackアップデートはWordPressが動かなくなる

投稿日:

 Jetpackが6.3.2になった。

 そこですぐにアップデートした。途端に、このブログは動かなくなった。下のようなエラーを吐いて、ブログが表示されなくなるのだ。

Parse error: syntax error, unexpected '[', expecting ')' in /home/ ... (中略) ... /wp-content/plugins/jetpack/modules/widgets/simple-payments.php on line 220

 このエラーが出る理由は簡単で、PHPのバージョンが古いからである。私の場合は5.x版のPHPを使用していたため、こういうことになった。

 PHPをサクッと7.1にアップデートすれば、このエラーは出なくなる。

 この状況は、一にかかって、環境によるとしか言いようがないが、ごくごく一例として、私が使用しているGMOペパボ(株)の「ロリポップ!レンタルサーバー」の場合を言えば、「ユーザ専用ページ」を表示させ、画面左ペインから「PHP設定」を選べばよい。そうすると、ドメイン毎にどのPHPバージョンを使用したいか選択できるようになる。ここで、全てのドメインにおいて最新のPHPバージョンを使用するよう設定すれば、今回の問題は即解消する。

 ただし、いわでもがなのことではあるが、自ら古いバージョンのPHP仕様に依存する諸設定や開発を行っている場合は上記の限りではなく、ましてや使用しているサーバが異なれば処置も全く異なる。私佐藤俊夫としてもかかる状況を踏まえた上での責任など()いかねるので、読者諸兄姉におかれてこの点を諒として頂きたい。

ジャイアニズム溢れる素敵なプライバシー・ポリシー

投稿日:

 昨日・今日と、WordPressのアップデートがあり、プライバシー・ポリシーに関する管理機能が追加されたようだ。

 システムから「サイトのプライバシー・ポリシーを記述しろ」とリコメンドされてくる。

 鬱陶しい。

 それで、渋々、不承不承(ふしょうぶしょう)、雛形に従ってプライバシー・ポリシーを記述した。

 いやあ、もう、こんな勝手なプライバシー・ポリシーがあるか、というような名作が出来上がった。

 「お前の個人情報は俺のもの、俺の個人情報は俺のもの」……というほどの、ジャイアニズム溢れる素敵な仕上がりだと思う。

 つまり、私が自費で借りているサーバーで勝手に書いているブログなので、こんなの私の勝手、というわけである。

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

投稿日:

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

 子供の頃、私の父はアニメや「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となる。

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