【WordPress6.4】テーマの動的切替が動作しない場合の対処方法(W3TCなど)
2023年11月27日
お困りの方がいるかもなので、休日ですが記事更新。
WordPress 6.4 / 6.4.1 で発生している、テーマの動的切替えが正しく動作しない事がある症状について、暫定対処方法を紹介しておきます。
WordPress のテーマは通常、管理画面から選んだ1つが使われますが、プラグインの機能によってはアクセスしてきたユーザー毎に異なるテーマ・テンプレートを出し分けることもできます。
が、WordPress 6.4 / 6.4.1 へアップデートすると、このテンプレート切り替えが正常に動作しない症状が発生。具体的には以下のようなケースを確認しています。
- キャッシュプラグイン「W3 Total Cache」の Cache Group 機能で Referrer、User-Agent、Cookie毎にテーマを出し分けできなくなる。あるいは、CSS だけ別テーマのものに切り替わってしまう
- プラグイン「Any Mobile Theme Switcher」でスマホからのアクセス時にモバイルテーマへの切り替えが行われない
このほか、add_filter('template', 'USER_DEFINED_FILTER_FUNCTION')
; でテーマファイルを切り替えている自作プラグインでもコケているので、上記以外のキャッシュプラグイン、モバイル・レスポンシブ向けテーマ切り替えプラグインでも同様の症状が発生している可能性は大いにありそうです。
とりあえず、これらの症状への暫定対処方法は、下のリンク先のプラグインを導入すること。
まずはサイトを WordPress 6.4 系へアップデート後、上のプラグインを有効化すれば OK です。
斜め読みなので間違ってたらごめんなさいですが、どうやら WordPresss 側で子テーマを使っているかどうかの判定絡みで、テンプレートとスタイルシートのパス周りのパフォーマンス改善が行われたようで、それに伴い発生している症状なのではないか、とは感じるところです。
参考情報:
- WordPress 6.4-Update zerstört Responsive Themes auf Mobile-Geräten – ein schneller Fix | Borns IT- und Windows-Blog
- WordPress 6.4 – The plugin no longer works. | WordPress.org
- #59279 (Unnecessarily check to see site is using a child theme in the theme functions.) – WordPress Trac
- #58576 (locate_template does not check to see site has parent theme.) – WordPress Trac
- #58866 (Avoid consts inside `locate_template` as it gives incorrect template path after switch_theme) – WordPress Trac
- #18298 (deprecate TEMPLATEPATH and STYLESHEETPATH) – WordPress Trac