WordPress4.4以降でカスタムフィールドを使い、投稿ごとにタイトルタグを自由に編集する方法(フィルターフック使用)

2015年12月11日

2ヶ月くらい前に『WordPress4.1以降でカスタムフィールドを使い、投稿ごとにタイトルタグを自由に編集する方法(フィルターフック使用)」という記事を書いて、さらにこれをプラグイン化したものもリリースしたんですが、つい今週WordPress4.4がリリースされたら、あっさりフックが変わってしまったので、早速修正することになりました。

新フックその1 pre_get_document_title

タイトルタグ書き換えの仕様としては、前回の記事と全く同じですのでそちらを参照してください。

今まで使っていた
add_filter( 'wp_title', 'mypace_custom_title', 10, 2 );

のフィルターフックが4.4で変わってしまったので、このままではタイトルタグの変更が反映されません。
wp_titleの部分を新しいフック pre_get_document_titleに書き換えれば反映されます。

新フックその2 document_title_parts

サイト名の出力はそのままで、投稿名だけ変更する「その2」の場合はこうなります。

タイトルタグの個別の要素別に上書きできる document_title_parts フックで投稿名のみ書き換えています。
$title['title'] の他にも、

  • $title['site'] (サイト名)
  • $title['tagline'] (フロントページで表示されるサイトのキャッチフレーズ部分)
  • $title['page'] (ページ送り時の2ページ目以降の表示)

の4種類の要素を上書きできます。
(※ただし’tagline’は標準だと、フロントページが「最新の投稿」の時のみの出力になってますね。今までは、固定ページをフロントページにしていてもキャッチフレーズが出力されていたのですが。)

4.3.1以下への後方互換を保ちたい場合

自分の環境であればそのまま書き換えればいいんですが、プラグインだとある程度後方互換も保たないといけないので、バージョンによる分岐を追加しています。

自分のサイトでもバージョンチェックをやりたい人はこんな感じにしてください。

関連情報

昨日タイトルタグ周りのフックの修正についてブログ書こうとしたところ、もう既に10月11月の時点で書いてる人がいたのでやめたんですね。
でも、古いコードを紹介してしまっている以上、フォローしておかねばいけない気がしたので最低限のところだけ書きました。
もっと詳しく知りたい(日本語で)という方は以下のページを参考にどうぞ!

活用事例 WordPress4.4でタイトルタグのセパレータが’ – ‘になったのを’ | ‘に戻す

以上です。

さいごに、私以外にも1日1回くらいDLしてくれてる人いるみたい。
プラグイン使ってくれてる人ありがとう。