WordPressのtitleタグ編集

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