Codepia

WordPressのタイトルタグをページタイプごとに変える方法|title-tagとpre_get_document_title

ページ内には広告が含まれます広告ポリシー

WordPressの自作テーマで、タイトルタグをページタイプごとに出し分ける方法を紹介します。title-tagとpre_get_document_titleを使って、トップページ・記事ページ・カテゴリ・タグ・検索結果・404ページなどのタイトルを整理する基本例をまとめました。

WordPressのタイトルタグとは

WordPressのタイトルタグとは、HTMLの<title>に出力されるページタイトルのことです。

記事本文に表示されるh1とは別のもので、ブラウザのタブ名、検索結果に表示されるタイトル、ブックマーク名などに使われます。

タイトルタグがブラウザタブや検索結果で使われるイメージ
タイトルタグは、ブラウザタブや検索結果などで使われます。

WordPressでも通常のHTMLホームページ同様、投稿記事では記事タイトル | サイト名、カテゴリページではカテゴリ「WordPress」の記事 | サイト名のように、ページの種類に合わせてコードを書くことができます。

そこでこの記事では、WordPressテーマでタイトルタグを扱う基本例として、functions.phptitle-tagpre_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>を検索します。

ページのソースを表示してtitleタグを確認する手順
ページのソースから、出力されたtitleタグを確認できます。

トップページだけでなく、それぞれのページごとに分岐の確認をしておきましょう。

まとめ

ページタイトルの調整はSEO対策の1丁目1番地レベルの重要な要素なので、これまであまり触ってこなかった方は、ぜひ一度確認いただけたら嬉しいです。

トップへ戻る