title-tag テーマ機能 (テーマサポート) を導入する理由

WordPressのロゴ。

WordPress 4.1 からテーマの機能(サポート)に title-tag が追加されました。 title-tag は文字通り title 要素を出力するための機能です。 このテーマ機能を有効にすると、wp_header 関数によって title 要素が出力されるようになります。

従来はテーマファイル(テンプレートファイル)内で wp_title 関数を使ってタイトルを出力していました。 また、出力するタイトルの内容を任意に編集する場合には、wp_title フィルタにフックする関数を用意します。

実質的に出力できる内容が変わらないのですが、title-tag 機能は有用だとされています。

title-tag を導入するべきかどうか

WordPress 公式に導入された以上、導入してはいけない、ということはありませんが、 導入するべきかどうか、という疑問に対しては「導入したほうが良い」と回答します。

テーマ独自のカスタマイズを導入していない、あるいは、特殊なプラグインが title-tag 機能に対応していないために動作しない場合を除き、title-tag の導入は有意義です。

title-tag を採用したほうが良い理由は次の2つが挙げられます。

  1. プラグインが title 要素を編集するとき、恩恵を最大に受けられるようになります。
    • 処理の効率化が期待できます。
  2. 将来的に wp_title 関数を使った title 要素の出力はなくなる方針であるようです。

一方で、title-tag 機能の導入に懐疑的な人(後述します)は導入しなくても良いでしょう。 ただ、これについてはシステム設計にある程度精通している必要があります。 そうでなければ、WordPress 公式の方針に則った方が良いです。

また title を編集するようなプラグインを使わない限り、title-tag を導入しても恩恵はありません。

wp_title フィルターのフックは継続して利用できる

wp_title フィルターに対するフックは継続して利用することができます。 title-tag 機能によって呼び出される _wp_render_title_tag 関数が、内部で wp_title 関数を実行するためです。

プラグインなどによって title を編集する場合に利点がある

title-tag 機能についての議論の場で、 主要な提案者(SEOプラグインなどの開発を行っている方ですね)は、概ね次のような目的で title-tag 機能が必要だとしています。

多くのユーザやテーマが、テンプレートファイル内にある title 要素の中に、wp_title 以外の情報を設置していて、例えば bloginfo 関数などが挙げられる。 あるいは、wp_title 関数が使われているか、既に実行されたかどうかを判断する術がない。

このため、(SEO 向けなどの)プラグインが title 要素を編集するとき、出力バッファから title 要素を検索(走査)して編集する必要がある。 title タグまでを含めて出力する機能があれば、検索する手間が省け、より効率的に title を編集することが出来る。

あるいは次のようにも言っています。

wp_title 関数を使っても同じことが可能であるが、wp_title 関数が、従来の意図とは異なる方法で利用されていることも多くある。

(つまり title 要素を構成する以外の目的で wp_title 関数が使われていて、wp_title 関数を、 title 要素を構成する目的で編集してしまうと、title 要素以外の場所で不都合が生じる可能性がある。 と、言いたいのだと思われます。)

確かに title 要素を検索することはコスト高です。文字列の走査はいずれの場合には量が増えるにつれて処理する量が増えますし。 title を一意に操作するための機能があれば、不用意な title が出力されることはなくなるでしょう。

title-tag の機能に懐疑的な意見

wp_title 関数と wp_title フィルタが存在するにもかかわらず、title-tag 機能を導入する理由はない、と考える人もいるでしょう。 実際に議論の場でも否定的な意見はいくらか出ています。次の理由が否定派の意見です。

  • wp_title 関数は十分に機能している関数である。
  • wp_title 関数の使い方を強制し、周知すれば良い。
  • wp_title 関数の使い方を正すよりも、title-tag 機能を導入する方が編集(更新)するファイルが多い。
  • title-tag 機能に 200 行以上の新規のコードを導入する価値があるようには思えない。
    • > wp_title 関数の使い方をただしたほうが良い

細かく見ればもう少し議論は複雑です。端的には、これらの否定派の意見は "wp_title 関数が title 要素を出力する以外の方法に用いられている" という問題を解決できないですね。

複数の title が出力されることを防ぐことが出来る、なんて話も見えますが、 他の要素だって設定によって下手なテーマファイルを作ってしまえば複数回出力されてしまうので、本質的な問題ではないでしょう。 依然として懐疑的な人が現れても不思議ではありません。

Reference