WordPressのプラグイン『LiteSpeed Cache』v5.7でESIブロック化したショートコードが正常に出力されなくなった際の備忘録記事です。
基本情報
LiteSpeed Cacheプラグインをv5.6→v5.7へと更新すると、ESIブロック化していたショートコードが正常に出力されなくなった。
結論から言うと、WordPressのパーマリンク設定でパーマリンク構造をトレイリングスラッシュ(末尾のスラッシュ「/」)のあるものに変更すると正常に動作するようになった。
トレイリングスラッシュ無しだと、ESIブロック化したショートコードは正常に出力されなかった。
v5.6→v5.7でESIブロック化したショートコードに関連する脆弱性が修正されています。
これに関連しているのかも?
症状
上記画像の赤枠部分のショートコードは以下(テーマCocoonの新着投稿のタイトルリスト)。
[esi info_list ttl="0"]
先頭に「esi」を追加したショートコードが正常に出力されなくなる。本来出力されるはずの中身がすっぽり抜け落ちる。
デベロッパーツールで確認すると「ttl=”0″」を指定しても、「uncached」にならず「cached」となっていた。
WordPressの公式テーマ『Twenty Twenty-One』で、WordPressデフォルトのショートコード「gallery」などでも同様の状態になった。
確認した範囲では、ESIブロック化した全てのショートコードが正常に出力されなかった(テスト時は毎回全てのキャッシュをパージ済み)。
対処
パーマリンク構造をトレイリングスラッシュのあるものに変更すると、ESIブロック化したショートコードが正常に出力されるようになった。
パーマリンク構造が、「数字ベース」や末尾にスラッシュのない「カスタム構造」だとESIブロック化したショートコードが正常に出力されなかった。末尾がパラメーターの「基本(?p=123)」は正常に機能する。
当サイトはカスタム構造で「/%postname%」に設定していました。
原因を特定するためにテスト環境で色々試しましたが、まさかこんな単純なことだったとは😭