【WordPress】投稿タイトルの先頭に自動でカテゴリ名を追加する方法

【WordPress】投稿タイトルの先頭に自動でカテゴリ名を追加する方法 WordPress

WordPressでは、投稿タイトルにカテゴリ名を含めることで、読者に記事の内容を分かりやすく伝えたり、SEO対策としてキーワードを補強することができます。本記事では、投稿タイトルの先頭にカテゴリ名を自動的に追加する方法を紹介します。

カテゴリ名をタイトルの先頭に追加する目的

カテゴリ名をタイトルに含めることには、以下のようなメリットがあります。

・一覧ページや検索結果で記事の分類が一目で分かる
・SNSや外部サイトでシェアされた際に内容が伝わりやすい
・特定カテゴリの記事を強調して表示したいときに便利

WordPressのテーマやプラグインを変更しても動作するよう、フィルターを使って実装します。

タイトルにカテゴリ名を追加するコード

テーマの functions.php に以下のコードを追加します。

function add_category_to_post_title($title, $id = null) {
  if (is_admin()) {
    return $title;
  }

  if (is_singular('post') || is_home() || is_archive() || is_search()) {
    $post = get_post($id);
    if (!$post || $post->post_type !== 'post') {
      return $title;
    }

    $categories = get_the_category($post->ID);
    if (!empty($categories)) {
      $category_name = esc_html($categories[0]->name);
      // すでにカテゴリ名が含まれている場合は追加しない
      if (strpos($title, $category_name) !== 0) {
        $title = '【' . $category_name . '】' . $title;
      }
    }
  }

  return $title;
}
add_filter('the_title', 'add_category_to_post_title', 10, 2);

このコードは、投稿が「投稿タイプ=post」である場合に、その最初のカテゴリ名を取得してタイトルの前に追加します。

注意点と補足

この処理は、フロントエンドでのみ有効にする設計となっており、管理画面ではタイトルを変更しません。さらに、既にカテゴリ名が含まれている場合は、二重で追加されないように判定しています。

まとめ

カテゴリ名を投稿タイトルの先頭に自動追加することで、ユーザーにも検索エンジンにも優しい記事表示が可能になります。テーマに依存せずフィルターで処理するため、サイトの保守性も高く保つことができます。

用途に応じて、カテゴリスラッグを使ったり、複数カテゴリの処理に拡張することも可能です。