Jetpack「パブリサイズ共有」改行が気に入らずソースを手当て

投稿日:

 このブログではTwitterやFacebookに記事を共有するため、高機能プラグイン「Jetpack」の機能の一つ、「パブリサイズ共有」を使用している。

 数日前にそのJetpackのアップデートがあったのだが、それから、TwitterとFacebookへのポストの文章の改行がすべて消されてしまうようになった。

 私は最近、俳句のポストをすることが多いが、3句ぐらい詠んだ俳句が全部一行でポストされてしまった。左の如しである。

 これは嫌だ。

 WordPressは所詮PHPで書かれたものなので、嫌ならソースコードを修正すればよい。

 土曜日で、今日は休みだ。時間があるから早速Jetpackのソースコードを読んだ。

 はじめ、WordPressのプラグインエディタでJetpackのソースコードを読んでみたが、どうもそこには表れてこないソースのようだ。仕方なく、FTP経由でサーバにあるソースを読む。

 「wp-content/plugins/jetpack/modules/publicize/publicize.php」にどうやらそれらしい記述を見つけた。

		$from_web = isset( $_SERVER['REQUEST_METHOD'] )
			&&
			'post' === strtolower( sanitize_text_field( wp_unslash( $_SERVER['REQUEST_METHOD'] ) ) )
			&&
			! empty( $admin_page );

		// phpcs:ignore WordPress.Security.NonceVerification.Missing
		$title = isset( $_POST['wpas_title'] ) ? sanitize_text_field( wp_unslash( $_POST['wpas_title'] ) ) : null;

 この赤字の部分らしい。

 この「sanitize_text_field()」という関数はWordPressの関数で、生のテキストからタグやらSQLインジェクションやら、汚いものをサニタイズしてくれる関数である。ところが、綺麗にしてくれるのは有難いが、改行コードまで全部サニタイズしてしまうのである。改行だけは許したい場合、この「sanitize_text_field()」ではなく「sanitize_textarea_field()」のほうを使う。

 早速この部分を「エイヤ」とばかり書き替えて試す。

		$from_web = isset( $_SERVER['REQUEST_METHOD'] )
			&&
			'post' === strtolower( sanitize_textarea_field( wp_unslash( $_SERVER['REQUEST_METHOD'] ) ) )
			&&
			! empty( $admin_page );

		// phpcs:ignore WordPress.Security.NonceVerification.Missing
		$title = isset( $_POST['wpas_title'] ) ? sanitize_textarea_field( wp_unslash( $_POST['wpas_title'] ) ) : null;

 テストしてみると、TwitterもFacebookもどうやら意図した改行になったようだ。……ふう、やれやれ。

 JetpackのソースコードはGitHubにある。そこで修正を提案するのもありかな、とかすかに思ったが、こういうことがしたいのは多分私だけだろう、とも思うので、やめた。

 それに、この修正がシステムの他の部分にどういう影響を及ぼすかをテストしなければならないが、面倒臭いからする気がない。

 WordPressのように多くの機能とコードからなるシステムのテストなんて今の私にはできかねる。ではオープンソースらしく、世界の多くの人々と協力したり連携したりして、皆でやればよいという話になるが、それも面倒臭くて嫌だ。

 WordPressは世界システムだから、皆でテストしようとすると英語で喧々諤々(けんけんがくがく)と議論しなければならなくなってしまう。英語なんて嫌いだし出来ないし、疲れる。なので、このブログに書いておくだけにする。

 当然のことだが、このような方法はあまりお勧めは致しかねる。というのも、このように作動中のソースコードをサーバ上で修正すると、Jetpackのアップデートがあるたびに同じ個所を修正しなければならないからである。私はJetpackのOGPの投稿動作画像挿入時のWordPressの動作をカスタマイズして使っているが、JetpackのアップデートやWordPressのアップデートのたびにソースを修正しなおしており、これはこれで結構面倒臭い。

Tumblrが使いにくくなっている

投稿日:

 来週の「さえずり季題」の出題当番が回ってきた。いつものように、俳人の青山酔鳴氏がまとめて下さっている「Tumblr」のさえずり派ブログを開こうとしたら、アカウントがなければ開けなくなってしまっている。

 あら……。

 ネットを「Tumblr」で検索してみると、「Tumblr 代替」などというキーワードがリコメンドされてくる。はて……。

 旧臘、どうもTumblrの運営方針が変わり、こういうことになってしまったらしい。多くの人は代替を探してどこかへさまよい出てしまったようだ。

 私はTumblrを主ウェブ発言域にする気はないので、適当なアカウントを一つ作る。あまりWebアカウントを増やしたくないのが本音だが、まあ、いいか、というところである。

 Jetpackのパブリサイズ共有を使用して、WordPressからTumblrにクロスポストするようにした。

WordPressの共有ボタンの設定のコツ

投稿日:

 このブログはWordPressを使用している。便利にするため、様々な機能を提供する詰め合わせ的なプラグイン「Jetpack」を導入している。有名なプラグインで、定番と言えるだろう。サーバは「ロリポップ」だ。

 FacebookやTwitterの共有ボタンはJetpackの機能で貼り付けている。

 ところが、最近Facebookの共有ボタンが出なくなってしまった。どれ、設定し直そうか、とJetpackの設定画面に行き、

「設定」 → 「共有」 → 「共有ボタン」 → 「共有ボタンを設定する」

 と操作する。

 ここで、以前は自分のサイト内の設定画面が表示されていたように思うのだが、なぜか「wordpress.com」のほうの設定画面に飛ぶようになった。

 ふぅん、まあ、いいか、ぐらいの気持ちで共有ボタンを再配置し、保存ボタンをクリックすると、あれれ……。

 「変更を保存する際に問題が発生しました。もう一度お試しください。」

……などという赤色のメッセージが右上に表示されて、設定が保存できないのである。

 何度試しても同じである。

 まあ、Facebookのボタンが表示されようがされまいが、ブログ自体に何か大きな影響があるわけでもなし、あきらめてしまえばいいようなものだが、使いたい機能が使えないというのはなんとなく気持ちが悪い。

 ググッてみても、あまり情報はない。

 どうしようかな、と少し考え(あぐ)んだが、ふと、「レンタルサーバのほうの設定なのでは?」と思いついた。wordpress.comの画面が表示されるので、これはwordpress.comの方のバグか何かで、自分のサーバの設定ではないのではないかと思いがちだが、実際はwordpress.comから更新のリクエストが自分のサーバに送られるのではないか、と思いついたのである。

 ロリポップはウェブアプリケーション・ファイアーウォール、通称「WAF」が非常に厳しく、クロスサイトで機能を提供するようなものがしょっちゅうひっかかることで知られている。何か変だな、と思ったら、これを有効にしたり無効にしたりして試すことで、だいたいうまくいく。

 そこでさっそく、その設定画面に行ってログを見てみた。

 私はいくつかのドメイン名でこのブログを上げているが、そのうちの一つのログに、案の定、先ほどJetpackの設定変更を保存しようとしたときの日時で、アクセス拒否したログが残っていた。

 そこで、一時的にWAFを無効にする。

 ロリポップのWAFの操作の難点は、この「有効・無効」の切り替えに5分~10分かかることだ。これが「試しに設定を変えてみる」という「感度試験」の実行を面倒臭いものにしている。

 さておき、WAFの設定が変更されるのをしばらく待つ。

 そうして、(おもむろ)にJetpackの共有ボタン設定の「変更を保存」ボタンをクリックする。

 そうすると、右の画面キャプチャのように、「設定を保存しました」の緑色のメッセージが右上に表示されて、無事共有ボタンの設定が保存されるわけである。

 この件でお悩みの向きが他にいるとも思えないのだが、一応、人様の参考になるかもしれないから、ここに書き記してネットに放流しておきたい。

今回の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仕様に依存する諸設定や開発を行っている場合は上記の限りではなく、ましてや使用しているサーバが異なれば処置も全く異なる。私佐藤俊夫としてもかかる状況を踏まえた上での責任など()いかねるので、読者諸兄姉におかれてこの点を諒として頂きたい。

Facebookタイムラインの「OGPイメージ」の採り方がちょっと変わったようだ

投稿日:

 Facebookは月々日々夜々仕様が変わる。最近何となく気づいていたのは、ブログに画像を置いて、その記事へのURLをシェアした時の「OGP(Open Graph protocol)画像」の扱いが変わったことだ。いつの間にか、ブログの画像が採用されなくなった。

 大した話ではないので「まあいいや」で放っておいたのだが、今度は「FBページ」のほうの画像の扱いが少し変わったように思う。たくさん画像を貼ったブログ記事へのURLをポストすると、「どの画像をどの順番で出すか」ということを選択させるインターフェイスが表示され、画像の順序、表示の有無等を選べるようになった。右がそれを使ってポストした記事だ。

 ブログのエントリは、Jetpackを使ってFacebookとTwitterにクロスポストしている。Facebookのクロスポスト先はFacebookページに向けることも可能だが、ページは誰も見ちゃいない(笑)ので、タイムラインに向けている。

 これまで「人に見せたい写真」などをブログ側で一元管理できていたわけだが、タイムラインに写真が載らないとなるとこれが期待できないので、うーん、どうしたものかな、と思案が()るところだ。

 今確かめてみると、Jetpackによる自動クロスポストを使わず、手動でFacebookのタイムラインにブログ記事のURLを貼ると、ブログ内画像を選ぶインターフェイスが表示されることが判った。しかし、いちいち手動で記事の共有など、面倒臭くてやってられない。

 Instagramも楽しんでいるが、TwitterのタイムラインにはInstagramからのクロスポストでは写真が載らなくなった。これはつまらない。ところが、ブログからのクロスポストだと、Twitterには載る。

 この辺のところ、引き続き観測が必要だ。

Jetpackが5.1にup

投稿日:

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

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

投稿日:

 標記。

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

Jetpackのパブリサイズ共有が全滅(3)

投稿日:

 などと言っていたら、今朝の投稿が今頃になって突然ポコポコポコッ、と連続ポストされた。

 なんなんだろ。

 いずれにせよ、「私の問題」じゃなくて「他人の問題」、他人の問題の中でも「アッチの問題」じゃなくて、「コッチの問題」っぽいな。他のSNS、TwitterやGoogle+も今頃になって投稿されてるから、Jetpackの問題か、wordpress.orgの問題か、あるいはサーバ会社のロリポップの問題だろう。

 詳しいログなどがほとんど手に入らないから、調べようがない。

Jetpackのパブリサイズ共有が全滅(2)

投稿日:

 WordPressサイトのほうの設定の、「共有」で各SNSとの連携を解除してみたら、設定の画面は正常に遷移した。

 さて、この投稿はうまくいくかどうか……?

 しばらく様子を見てみたが、やっぱりダメみたいだ。

Jetpackのパブリサイズ共有が全滅(1)

投稿日:

 なんだかわからないが、今朝からJetpackのパブリサイズ共有が全滅している。

 クロスポストしている4つのサービス、Facebook・Twitter・Google+・LinkedIn、どれも一つもポストされなくなってしまった。

 Jetpackのパブリサイズ共有を一度無効にしてもう一度有効にしてみたり、WordPressサイトのほうの共有をいじってみたりしたが、ダメである上に、自分のサイトに戻ってくると、Facebookからの連携許可ダイアログが連続して表示され、止まらなくなるなどした。

 どうも、先日のJetpackのアップデートあたりが原因であるような気がするが、一昨日は異常なくクロスポストできていた。

%d人のブロガーが「いいね」をつけました。