Categories: WordPress開発

titleタグへの表示を変えるフックは、the_titleではなくwp_title

ずいぶん以前に作ったサイトを改変することがあって、コードを見直していたら、the_titleフックを使っている部分がありました。

で、header.phpをみると、そこで直接タイトルタグを出力していて、結局、フックのところと、header.phpのところと、同じコードを書いているという、お粗末なことをやっておりまして。

そこで思い出したのですが、当時the_titleフックでtitleタグの内容を書き換えようとしたけれどうまくいかず、時間もなかったので、とりあえずheader.phpに直接書き込んだと。

ということで、お題のとおりなのですが、 titleタグへの表示を変えるフックは、the_titleではなくwp_titleです。
なので、表示するタイトルと、titleタグの内容を同じにしたいのなら、wp_titleフックも必要です。

function my_title( $title ) {
 if (is_page('99') && esc_html($_GET['type'])){
 $title = esc_html($_GET['type'])."式戦車|".$title;
 }
 if (is_singular('tanks')){
 $title = "[解説]".$title;
 }
 return $title;
}
add_filter('the_title', 'my_title');
add_filter('wp_title', 'my_title');

こんな感じ。

ちなみに、is_page(’99’)で、固定ページのIDが99で、かつGETオプションのtypeがあったら、タイトルに追加するようにしています。
また、カスタム投稿のtanksだったら、タイトルの頭に[解説]を付け足すようにしています。

nakaike