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;
});
出力自体を止める方法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タイトルの内容だけカスタマイズするには?
A
pre_get_document_title フィルターで文字列を返すと丸ごと差し替え、document_title_parts でパーツ(ページ名・サイト名など)単位の調整ができます。出力の削除は不要です。Yoast SEO利用時は wpseo_title フィルターでも上書きできます。Qremove_action が効きません。
A
remove_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プラグインの管理と競合しない方法を選びましょう。

