2025-07-12

PHP8にバージョンアップすると「続きを読む」が作動しない

最近サイトのPHPをバージョンアップしろという警告がうっとうしいので、これまでの7.4.33から8.2.28に上げたところ、ネタバレ防止のために使用している「続きを読む」のリンクが作動しなくなってしまいました。

そもそもこの「続きを読む」はWordpressにデフォルトで備わっている機能で、記事に<!–more–>タグを入れると、そこから下は「続きを読む」等のテキストリンクに置き換えられて表示されなくなり、そのリンクをクリックすると、全文が表示される記事に遷移する、という仕様になっています。

ただyukkun20は記事が遷移するのがいやなので、「続きを読む」をクリックすると、JavaScriptで隠れている部分がスライドして表示できるようにするプラグイン「Expand More Link」を使っていました。でもこのプラグイン、作者さんのこの書き込み以外の情報がないんだよな…しかも15年以上更新されてない。

おそらくPHP8には非対応になってしまったのだと思いましたので、これを機にプラグインを乗りかえることにしました。ところが世の中には「続きを読む」をカスタマイズするプラグインは山ほどあるのですが、moreタグをそのままいじれるプラグインがないんだよな…。そのままいじれないと、これまでの記事を全部修正しないといけなくなるのでそれじゃ意味がありません。

色々探した結果、こちらのブログに記載されている方法で解決しました。

ただし、このままだとPHP8では使用できないpreg_replace関数の/e修飾子が悪さをするので、こちらのサイトを参考に修正しました。

具体的には、117行付近の

        $output =  preg_replace('/\%u([0-9A-F]{4,4})/e',  "'&#'.base_convert('\\1',16,10).';'", $output);

を、

	$output =  preg_replace_callback('/\%u([0-9A-F]{4,4})/',
		function ($m) {
			return '&#'.base_convert('\\1',16,10).';';
		},
		$output);

と修正します。これで正しく作動するはずです。

続きを読む(ネタバレ注意) »

トラックバック URL

コメント & トラックバック

そんなことになってたのですね 僕も社会人になって(19歳ごろ?)インターネットの世界にはいりましたが
ネットワークに詳しくない僕でも時代の変化を感じていて なんか切なくなるよな
>>しかも15年以上更新されてない。
ちょっと話がそれますが 若いころから応援してきた ブログやウェブサイトはもうほとんど 更新されてないか閉鎖されています
SNSで管理人が亡くなったと親族が報告するのも見るようなって こういうのはいつかきちゃうんだなと
ただ現在でも活動されている方もいて 長く続けられるのはすごいことなんだなと感じています yukkun20さんもその一人です

yukkun20もネット黎明期からこの世界にいますけど、本当時代の変化を感じます。ある日突然更新が途絶えたサイトの管理人さんが亡くなっていたり…。
yukkun20がこのサイトを始めた頃は星界のファンサイトもたくさんあったのに、いまは寂しくなっちゃいましたよね。yukkun20が元気でいる限りはサイト続ける所存ですけど、自分もいつまで頑張れるのやら。

コメントフィード

コメント

皆さまのコメントが励みになっています。ありがとうございます。