WordPress4.4以降でtitleタグをカスタマイズする方法

WordPress4.4以降は、それ以前までにタイトルを生成する為に使用されていたwp_title関数を使用して生成する方法が非推奨となりました。それに代わって新たにwp_get_document_titleと言う関数が登場し、カスタマイズ方法もこれまでと変わりました。

これまでのtitleの記述方法

これまでtitleタグは前述のwp_title関数を使用して以下のように記述していました。

<title><?php wp_title( '|', true, 'right' ); ?></title>

WordPress4.4以降のtitleの記述方法

しかし、WordPress4.4以降はfunctions.phpに下記の記述をすることで、タグを出力する機能を有効化し、WordPress側でtitleタグを生成する方式へと変更になりました。

<?php

add_theme_support( 'title-tag' );

デフォルトではトップページではページタイトル - サイトのディスクリプション、それ以外のページではページタイトル - サイト名のように出力されます。

titleタグのカスタマイズ

wp_get_document_title関数のフィルターフック

pre_get_document_title

titleタグで出力される内容を全部変更したい場合、このフィルターを使用します。

<?php

add_filter( 'pre_get_document_title', 'my_pre_get_document_title' );
function my_pre_get_document_title( $title ) {
  if ( is_category( 'wordpress' ) ) {
    $title = '変更後のタイトル';
  }
  return $title;
}

document_title_separator

タイトルとサイト名を区切っているセパレーターのみを変更したい場合に使用します。

<?php

add_filter( 'document_title_separator', 'my_document_title_separator' );
function my_document_title_separator( $sep ) {
  $sep = '|';
  return $sep;
}

document_title_parts

タイトルだけを変更したい場合などに使用します。このフィルターの値は、連想配列となっているので注意してください。

  • $title['title'] – ページタイトル
  • $title['page'] – 現在閲覧しているページのページ数
  • $title['tagline'] – サイトのディスクリプション
  • $title['site'] – サイト名

例として、デフォルトではページタイトル - サイトのディスクリプションのような形式で出力されるトップページの、サイトのディスクリプションを削除する方法をご紹介します。

<?php

add_filter( 'document_title_parts', 'remove_title_description', 10, 1 );
function remove_title_description ( $title ) {
  if ( is_home() || is_front_page() ) {
    unset( $title['tagline'] );
  }
  return $title;
}

私たちGlatchはコーポレートサイト制作を得意とするWeb制作事務所です。
お気軽にご相談・お問い合わせください。