ページ内には広告が含まれます広告ポリシー
WordPressの自作テーマで、タイトルタグをページタイプごとに出し分ける方法を紹介します。title-tagとpre_get_document_titleを使って、トップページ・記事ページ・カテゴリ・タグ・検索結果・404ページなどのタイトルを整理する基本例をまとめました。
WordPressのタイトルタグとは
WordPressのタイトルタグとは、HTMLの<title>に出力されるページタイトルのことです。
記事本文に表示されるh1とは別のもので、ブラウザのタブ名、検索結果に表示されるタイトル、ブックマーク名などに使われます。
WordPressでも通常のHTMLホームページ同様、投稿記事では記事タイトル | サイト名、カテゴリページではカテゴリ「WordPress」の記事 | サイト名のように、ページの種類に合わせてコードを書くことができます。
そこでこの記事では、WordPressテーマでタイトルタグを扱う基本例として、functions.phpにtitle-tagとpre_get_document_titleを追加して、ページごとにタイトルの中身を調整する方法を紹介します。
今回のtitle-tagを使う場合、header.phpには<title>タグは不要です。残っていると、タイトルタグが二重に出力されることがあるため、header.phpからは削除してから以下を進めてください。
SEOプラグインを使っている場合
All in One SEO、Yoast SEO、Rank MathなどのSEOプラグインを使っている場合、タイトルタグをプラグイン側で管理していることがあります。
その場合、テーマ側でもタイトルを上書きすると、プラグイン側の設定と競合、エラーの原因となる可能性があるため、どちらかにまとめるのが無難です。
タグを有効化する
今回の基本は、functions.php側でタイトルタグの出力を有効化し、必要なページだけタイトルの文言を調整する形です。
functions.phpでtitle-tagを有効化する
まずは、テーマでタイトルタグを扱えるように、以下のコードでタイトルタグをアクティブ状態にします(次のコードでまとめて紹介するので、ここでは追加不要です)。
<?php
/* ===== タイトルタグのアクティブ化 ===== */
add_action('after_setup_theme', function (){
add_theme_support('title-tag');
});
?>
これで、WordPress側でタイトルタグを出力できるようになります。
タイトル調整コードを追加
タイトルの中身を調整するには、pre_get_document_titleを使います。
以下は、トップページ・カテゴリページ・タグページ・検索結果・404ページなどに合わせて、タイトルを出し分ける例です。
完全版コード
以下をfunctions.phpに追加します。
<?php
/* ===== タイトルタグのアクティブ化 ===== */
add_action('after_setup_theme', function (){
add_theme_support('title-tag');
});
/* ===== 記事タイトル生成 ===== */
add_filter('pre_get_document_title', function($title){
$site = get_bloginfo('name');
$desc = trim((string) get_bloginfo('description'));
if ($title === '' && is_singular()) {
$title = single_post_title('', false);
}
if (is_404()) {
return $site . ' | ページが見つかりません';
}
if (is_home() || is_front_page()) {
return $desc !== '' ? ($site . ' | ' . $desc) : $site;
}
if (is_category()) {
return $site . ' | カテゴリ「' . single_cat_title('', false) . '」の検索結果';
}
if (is_tag()) {
return $site . ' | キーワード「' . single_tag_title('', false) . '」の検索結果';
}
if (is_date()) {
return $site . ' | 「' . get_the_date('Y年m月') . '」のアーカイブ';
}
if (is_search()) {
$keyword = get_search_query(false);
if ($keyword === '') {
return $site . ' | 検索結果';
}
return $site . ' | 「' . $keyword . '」の検索結果';
}
return $title . ' | ' . $site;
}, 5);
?>
これで、主なページタイプごとにタイトルの表示を変えられます。
完全版コードの表示例
上記のコードでは、ページタイプごとに以下のようなタイトルになります。
- トップページ:サイト名 | キャッチフレーズ
- 投稿記事:記事タイトル | サイト名
- 固定ページ:固定ページタイトル | サイト名
- カテゴリページ:サイト名 | カテゴリ「(カテゴリ名)」の検索結果
- タグページ:サイト名 | キーワード「(タグ名)」の検索結果
- 検索結果ページ:サイト名 | 「検索語」の検索結果
- 日付アーカイブ:サイト名 | 「2026年07月」のアーカイブ
- 404ページ:サイト名 | ページが見つかりません
コード内の主な分岐
完成コードでは、WordPressの条件分岐タグを使って、現在表示しているページの種類を判定しています。
トップページと記事ページ
is_home()とis_front_page()は、トップページまわりの判定に使います。
トップページでは、サイト名とキャッチフレーズを組み合わせています。キャッチフレーズが空の場合は、サイト名だけを返す形です。
投稿記事や固定ページなどの個別ページでは、最後のreturn $title . ' | ' . $site;によって、ページタイトル | サイト名の形になります。
カテゴリ・タグ・検索結果
カテゴリページではsingle_cat_title()、タグページではsingle_tag_title()を使って、表示中のカテゴリ名やタグ名を取得しています。
検索結果ページではget_search_query()で検索キーワードを取得し、キーワードが空の場合は検索結果だけを表示します。
404ページと日付アーカイブ
is_404()は、存在しないページにアクセスされたときの404ページを判定します。
is_date()は、年別・月別・日別などの日付アーカイブをまとめて判定します。今回の例では、get_the_date('Y年m月')で年月を表示しています。
できあがったタイトルタグの確認方法
設定後は、実際のページでタイトルタグを確認できます。
ブラウザのページ上で右クリックして「ページのソースを表示」を選び、<title>を検索します。
トップページだけでなく、それぞれのページごとに分岐の確認をしておきましょう。
まとめ
ページタイトルの調整はSEO対策の1丁目1番地レベルの重要な要素なので、これまであまり触ってこなかった方は、ぜひ一度確認いただけたら嬉しいです。





