WordPressのtitleタグはwp_head()
関数がほかのヘッダータグとともに出力しています(ver.4.4以降)。
タイトル表示要素のカスタマイズには、function.phpに特定のフックをfilterするphp関数を実装します。
表示要素の編集
個別記事の基本的な表示要素は「記事タイトル・セパレータ・サイトタイトル」になっています。
特定のページだけ、サイトタイトルを編集したい場合、以下のようにdocument_title_parts
をフックする関数を定義します。
function custom_title($title) {
if (is_page_template('page-spec.php')) {
$title['site'] = "商品詳細";
}
return $title;
}
add_filter('document_title_parts', 'custom_title', 10, 1);
この例では、固定ページのテンプレートがpage-spec.phpだった場合にサイトタイトルを書き換える想定としています。
このように、document_title_partsを利用する場合、必要なケースのみ文字列を加工して、ほかのケースはそのまま$titleを返せば対応できます。
document_title_partsは連想配列になっており、以下の項目を変更できます。
- $title[‘title’]
- $title[‘tagline’]
- $title[‘page’]
- $title[‘site’]
詳細は リファレンスに記載されています。pageはリストページのページ数、taglineはトップページ用の後半部分の文字列です。
区切り文字を変える
タイトルとサイト名の間に入る区切り文字もdocument_title_separator
フックに関数を定義すれば変更可能です。
function custom_sep( $sep) {
return '|';
}
add_filter('document_title_separator', 'custom_sep', 10, 1);
より詳細な編集
文字列を細かく変更したい場合は、pre_get_document_title
フックを使えます。
document_title_partsは連想配列内の要素を個別に変更する用途ですが、このpre_get_document_titleは文字列を直接指定します。
文字列操作の方が自由度は高いのですが、連想配列の変更の方が簡潔に書けるため、要素の並び方を変更する必要がなければ、document_title_parts(配列指定)を利用する方が扱いやすいでしょう。
Chuma Takahiro