【WordPress】wp_headのtitle出力を削除・変更する方法|pre_get_document_titleと子テーマでの外し方

WordPressでwp_headからtitleの出力を削除する方法 WordPress

WordPressはテーマが add_theme_support('title-tag') を宣言していると、wp_head() の中で <title> タグを自動出力します。この出力を「変えたい」のか「止めたい」のかで、取るべき方法は異なります。タイトルの内容を変えたいだけなら、削除せずフィルターで書き換えるのが正解です。

目的別の正解

  • タイトルの文言を変えたいpre_get_document_title / document_title_parts フィルター(推奨)
  • 出力自体を止めたいremove_action() または remove_theme_support()
  • SEOプラグイン・テーマ機能で管理したい → Yoast SEOやCocoonのSEO設定に任せる
スポンサーリンク

タイトルを変えたいなら:フィルターで書き換える(推奨)

独自ロジックでタイトルを生成したい場合、出力を削除する必要はありません。pre_get_document_title フィルターで文字列を返せば、その値がそのまま <title> になります。

functions.php:タイトルを丸ごと差し替える
add_filter('pre_get_document_title', function ($title) {
  if (is_front_page()) {
    return 'カスタムタイトル | サイト名';
  }
  return $title; // 他のページは通常どおり
});

「区切り文字だけ変えたい」「サイト名の部分だけ変えたい」のように一部だけ調整するなら、パーツ単位で受け取れる document_title_parts が便利です。

functions.php:タイトルの一部だけ変更する
add_filter('document_title_parts', function ($parts) {
  // $parts = array('title' => ページ名, 'site' => サイト名 など)
  if (is_singular('post')) {
    $parts['title'] = '【ブログ】' . $parts['title'];
  }
  return $parts;
});
フィルターの仕組みから知りたい方へ
フックの基本はフィルターフックとは?、投稿タイトル自体(the_title)の加工は投稿タイトルの先頭に自動でカテゴリ名を追加する方法を参照してください。

出力自体を止める方法1:remove_action

<title> の出力そのものを止めたい場合は、functions.php で出力アクションを解除します。第3引数の優先度 1 を必ず付けるのがポイントです(登録時と同じ優先度でないと解除できません)。

functions.php:wp_headからtitle出力を解除
remove_action('wp_head', '_wp_render_title_tag', 1);

出力自体を止める方法2:remove_theme_support(子テーマから)

自作テーマなら add_theme_support('title-tag') の行を削除すれば済みますが、Cocoonなどの配布テーマは親テーマを直接編集できません。子テーマから外す場合は、親テーマの宣言より後に実行されるようafter_setup_theme の優先度を遅らせて解除します。

子テーマのfunctions.php:親テーマのtitle-tagを解除
add_action('after_setup_theme', function () {
  remove_theme_support('title-tag');
}, 20); // 親テーマ(既定10)より後に実行する

子テーマでの functions.php の書き方は子テーマでfunctions.phpを正しく拡張する方法で詳しく解説しています。

注意:静的な<title>の手書きはSEO事故のもと

全ページ同じタイトルになっていませんか?
出力を止めて header.php<title>サイト名</title> と固定で書くと、全ページが同一タイトルになり、SEOに深刻な悪影響があります(検索結果でページを区別できなくなります)。出力を止めるのは「完全に自前でタイトルロジックを組む」場合だけにし、文言を変えたいだけなら前述のフィルターを使ってください。また、Yoast SEO等のプラグインやCocoonのSEO機能を使っている場合は、そちらに管理を任せるのが安全です(自前の削除・手書きと競合します)。

よくある質問(FAQ)

Qtitleタグが2つ出力されてしまいます。
Aテーマの title-tag 対応とSEOプラグイン、または header.php の手書き<title> が重複しているのが典型です。手書きの <title> を削除し、テーマ+プラグインの自動出力に一本化してください。Cocoonは title-tag 対応のためSEOプラグインと自動で連携します。
Qタイトルの内容だけカスタマイズするには?
Apre_get_document_title フィルターで文字列を返すと丸ごと差し替え、document_title_parts でパーツ(ページ名・サイト名など)単位の調整ができます。出力の削除は不要です。Yoast SEO利用時は wpseo_title フィルターでも上書きできます。
Qremove_action が効きません。
Aremove_action('wp_head', '_wp_render_title_tag', 1)第3引数(優先度1)が抜けていないか確認してください。登録時と同じ優先度を指定しないと解除できません。remove_theme_support を子テーマから使う場合はafter_setup_theme の優先度を20など遅めにします。

まとめ

  • 変えたいだけなら削除しないpre_get_document_title(丸ごと)/document_title_parts(一部)
  • 止めるremove_action('wp_head', '_wp_render_title_tag', 1)(優先度1必須)
  • 子テーマからafter_setup_theme 優先度20で remove_theme_support('title-tag')
  • 静的な手書きtitleは全ページ同一になりSEO事故——フィルターかSEOプラグインに任せる

「変更ならフィルター・削除は最終手段」を基本に、テーマやSEOプラグインの管理と競合しない方法を選びましょう。