追記:2024-08-19
「SEO SIMPLE PACK」のtitleが二回表示される問題は、v3.5.0以降で修正されました。
このサイトにインストールしていたSEOプラグイン「SEO SIMPLE PACK」が、正しく動作していないことに気付きました。titleの書き換えは行われているのですが、WordPressのデフォルトのtitleが先に出力されるため、実質無効になっています。
もともと、このサイトでずっと使っていたのは「Yoast SEO」でしたが、先月のリニューアルの際に公式テーマにしてから正しく動作しなくなり、SEO SIMPLE PACKに切り替えていました。Yoastは不具合がなくなっていたので、現在はYoastに戻しています(ややこしい…)。
検証した結果、WordPress6.6時点で、以下の状況であることがわかりました。
- ブロックテーマに切り替えると、title要素を操作するフック「_wp_render_title_tag」が動作しない
- WordPressでアクティブサポートしているすべての公式テーマで発生している
- ブロックテーマでは、REST APIを経由しなければtitleをタグごと置き換えることができない
- title内の文字列の差し替えはできる
- HTMLヘッダの追加はできる
- クラシックテーマでは問題ない
「SEO SIMPLE PACK」は名前の通り、ごくシンプルなプラグインです。このため動作しなくなっていたのですが、それ以外の高機能なSEOプラグインがどういう状況か心配になりました。日本のWordPressサイトで主要なSEOプラグインの動作をテストしてみました。
動作テストの概要
以下の環境に、「Twenty Twenty-Four」テーマのWordPressを設置しました。
- エックスサーバー スタンダードプラン
- サブドメイン
- SSL有効
- WordPress本体は、ドメインルートの一階層下
このWordPressは、「表示設定」でホームを特定の固定ページに変更しています。その固定ページに対してtitle要素を設定して書き換えできるのかを検証しています。一応、descriptionとog:imageもチェックしました。
なお「Premium SEO Pack」もテストしようとしましたが、開幕からユーザー登録を求められ、レビューも低評価なので除外しました。
動作テストの結果
Yoast SEO
冒頭に書いたとおりです。問題なく動作しています。先月時点で動作していなかったのですが、それが私の環境の問題なのか、Yoastの不具合なのかは今となっては不明です。
SEO SIMPLE PACK
冒頭の問題が修正され、正しく動作するようになりました。
冒頭に書いたとおりです。簡易なフックを使用しているためWordPressのデフォルトのtitleを消すことができず、titleを書き換えることができていません。
All in One SEO
テスト自体ができませんでした。常に裏側でREST APIの通信を行っているようなのですが、ローカル環境にインストールすると502のゲートウェイエラーとなり、公開環境にインストールすると通信に失敗して変更が保存できません。
アンインストールする際のアンケートすら失敗します…泣きそうです。このプラグインの状況については、以前から利用している人たちにお任せしたいと思います。
Squirrly SEO
Rank Math
The SEO Framework
SEOPress
上記4つのプラグインはまとめて書きます。いずれも問題なく動作し、titleを書き換えることができました。
補足: title要素の位置
なお、プラグインによってtitle要素がOGP等のメタタグよりも「前」になるものと「後」になるものがありました。普通の運用をしていれば問題はない軽微な違いですが、SEOを専門にしている人は以前と違う挙動になる可能性があるので注意した方がよいです。
更に細かい話をすると、WordPressのフックの仕様上「前」になるものの方が不具合のリスクが大きいです。優先度にWordPressのデフォルト値の「1」以下となる、イレギュラーな数値を指定しているはずだからです。
WordPress開発チームの意図が見えない
とりあえず、ほとんどのSEOプラグインは既に対応できていることはわかったので、少しホッとしました。お断りしますが、冒頭のSEOプラグインの作者を非難しているわけではありません。この記事を書いている時点での事実をお知らせしているだけです。
むしろ、WordPressの開発チームに激しく文句を言いたいです。「_wp_render_title_tag」フックはプラグインを使用しないtitleの書き換えとして頻繁に使用されているものであるにも関わらず、ブロックテーマに対応していないことをアナウンスしていないからです。少なくともフックの解説ページにも記載がありません。
これは推理でしかないのですが、WordPressのコア機能にSEO関連の設定が実装されるのかもしれません。もしくは、やたらユーザー登録を即すSEOプラグインの排除が目的なのかもしれません。いずれにしてもWordPressはバージョンアップが早いCMSです。不具合が出たら他のプラグインに一時的に変更するなどしつつ、様子を見るしかないでしょう。それが無理ということなら、ブロックテーマには当面手を出すべきではないです。