WordPress:タイトルを自在にカスタマイズする方法

TwitterFacebookHatena
  • 公開:2019-3-11
  • 更新:2023-10-26
  • 文章量:2675
  • WordPress

TL;DR

WordPress4.4 以降において title タグを自動出力するには、非推奨の wp_title()関数の代わりに、テーマの機能を設定する関数add_theme_support( 'title-tag' );を functions.php に記述します。functions.php の中に書くことで保守性もよくなります。

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

functions.php

function mytheme_set() {
  add_theme_support( 'title-tag' );
}
add_action( 'after_setup_theme', 'mytheme_set' );

after_setup_themeは全てのテーマが読み込まれた後にテーマの機能を設定するフックです。タイトルが重複するので header.php には title タグを記入しないようにします。 これで head 内にタイトルが自動で出力されますが、body 内にタイトルを表示したい場合は、wp_get_document_title()をテンプレートファイルの任意の場所に記述します。

<?php echo wp_get_document_title(); ?>

document_title_parts

document_title_partsはタイトルの一部をフィルタリングするフックです。 タイトルをページごとに変更したい場合はdocument_title_partsを functions.php に記述します。

add_filter('document_title_parts', '関数名');

条件分岐させる基本的な形

function 関数名($title){
  if(条件){
    $title['title'] = 変更後のタイトル値 ;
  }
  return $title;
};
add_filter('document_title_parts', '関数名');

document_title_parts の$title パラメータ

  • title は閲覧したページタイトル
  • tagline はホームページのサイト説明
  • page は番号付きページ番号
  • site はホームページにない場合はサイトのタイトル

文字「○ ページ目」を削除

情報を削除するには unset を使います。例えば、ブログ一覧ページなどで、ページ番号の情報(例:ページ 2)をタイトルから削除する場合はこのように書きます。

function remove_title_pagenation($title){
  unset( $title['page'] );
  return $title;
};
add_filter('document_title_parts', 'remove_title_pagenation');

サイトの説明を削除

ホームページのキャッチフレーズ(サイトの説明)を削除する場合は、このような記述になります。

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

検索結果ページの和欧混植を置換・変更する

検索結果のページタイトルはデフォルトでダブルクォーテーションが付与されているので和欧混植になっています。これを以下のように日本語の記述名に置換してみましょう。

変更前:“○○” の検索結果
↓
変更後:「○○」を検索しました
// ページタイトル「検索結果」の一部を変更する
function change_title($title){
  if(is_search()){
    $search = array('“','”','の検索結果');
    $title = str_replace( $search, '', $title );
    $title['title'] = '「' . $title['title'] . '」を検索しました';
  }
  return $title;
};
add_filter('document_title_parts', 'change_title');

条件分岐タグので検索結果を指定して、消したい文字を配列に入れて、str_replace で置換しています。条件分岐タグを変えていけば、アーカイブ・404・カスタムポストなどのページも好きなように変更できます。 検索結果だけ変更したい場合は、サイト内検索を行ったときのクエリ文字列を取得するget_search_query()を使うと記述量を減らすことができます。

function change_title($title){
  if(is_search()){
    $title['title'] = '検索結果:' . get_search_query();
  }
  return $title;
};
add_filter('document_title_parts', 'change_title');

404 ページのタイトルを変更する

条件分岐で 404 ページなどを追加して個別に変更します。

// ページごとにタイトルを変更する
function change_title($title){
  if(is_search()){
    $title['title'] = '検索結果:' . get_search_query();
  } elseif(is_404()){
    $title['title'] = 'お探しのページは見つかりません' ;
  }
  return $title;
};
add_filter('document_title_parts', 'change_title');

以上、SEO 対策にもなる、最近の WordPress タイトルカスタマイズでした。

WordPress:タイトルを自在にカスタマイズする方法