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のアップデートのたびにソースを修正しなおしており、これはこれで結構面倒臭い。

コメントを残す

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

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