カテゴリー・ターム出力 (foreach) 生成ツール

single.php や archive.php などで、現在の記事や投稿に紐づくカテゴリー・カスタムタクソノミーを一覧表示したいときに使えるコード生成ツールです。カテゴリーリンク付きの表示や、ターム名だけの出力を手早く作りたい場面に向いています。

よくある出力パターン
  • カテゴリーリンクを横並び表示 → 標準カテゴリー / 形式:囲まない / リンクあり
  • カテゴリーをリスト表示 → 標準カテゴリー / 形式:リスト (ul/li) / リンクあり
  • カスタムタクソノミーを出力 → カスタムタクソノミーブロックでスラッグを入力
🏷️ 標準カテゴリー (get_the_category)
出力形式:
オプション:
📌 カスタムタクソノミー (get_the_terms)
出力形式:
オプション:

このツールの使い方

WordPressの個別記事(single.php)や、記事一覧のループ内(archive.phpなど)で、「その記事が属しているカテゴリーやターム」を一覧表示するためのPHPコードを生成します。

  1. 出力したい対象(標準カテゴリー か カスタムタクソノミー)のブロックを選びます。
  2. HTMLの出力形式(リスト、div、囲まない)を選択します。
  3. リンクの有無やクラス付与などのオプションを選び、「コードをコピー」をクリックしてテンプレートファイルに貼り付けます。
⚠️ 注意:ループの外(フッターなど)で使う場合
このツールで生成されるコードは、WordPressの「メインループ内」で使用されることを前提としています。もしフッターやサイドバーなど、ループの外で現在の記事のカテゴリーを取得したい場合は、get_the_terms( $post->ID, '...' )$post->ID に、明示的に取得したい記事のID(または get_queried_object_id() など)を渡す必要があります。

標準カテゴリー(get_the_category)について

get_the_category() は、現在の投稿に紐づく「標準のカテゴリー」の配列を取得する関数です。
取得される配列は、デフォルトで「カテゴリー名のアルファベット順(あいうえお順)」になります。この関数自体には、並び順の変更や特定のカテゴリーを除外するパラメータは用意されていません。
(※もし出力順を制御したい場合は、取得した配列に対してPHPの usort() などを用いて独自にソート処理を行う必要があります。)

カスタムタクソノミー(get_the_terms)について

get_the_terms( $post_id, $taxonomy ) は、指定した投稿に紐づく「カスタムタクソノミー(ターム)」の配列を取得します。
タクソノミーが存在しない、または紐づくタームがない場合は falseWP_Error オブジェクトを返すことがあるため、ジェネレーターの出力コードには ! is_wp_error( $terms ) という安全確認(エラー回避)の記述を含めています。これも標準カテゴリー同様、並び順はデフォルトで名前順となります。

💡 Tips:サイト全体のカテゴリー一覧を出したい場合は?

このツールはあくまで「いま見ている記事のカテゴリー」を出力するものですが、サイドバーなどで「サイトに存在するすべてのカテゴリー一覧」を表示したい場合は、以下の関数を使用します。
関数によって「HTMLが自動で出力されるか」「生のデータ(配列)が返ってくるか」が異なります。目的に合わせて使い分けてください。

  • ① wp_list_categories()

    自動的にリンク付きのリスト(<li>タグ)を生成して出力します。サイドバーの「カテゴリー一覧」などでそのまま使いたい時に便利です。

    <!-- 出力されるHTMLのイメージ -->
    <li class="cat-item cat-item-1"><a href="https://...">お知らせ</a></li>
    <li class="cat-item cat-item-2"><a href="https://...">ブログ</a></li>
  • ② wp_dropdown_categories()

    自動的にセレクトボックス(<select>タグ)を生成して出力します。ブログの絞り込み検索フォーム内などで活躍します。

    <!-- 出力されるHTMLのイメージ -->
    <select name="cat" id="cat" class="postform">
      <option value="-1">カテゴリーを選択</option>
      <option class="level-0" value="1">お知らせ</option>
    </select>
  • ③ get_categories() または get_terms()

    HTMLは一切出力されません。カテゴリーの情報が詰まった「生のデータ(配列)」だけを取得します。特定の順番(記事数が多い順など)で並び替えたり、独自の複雑なHTML(サムネイル画像を含める等)で出力したい場合は、この関数でデータを取得してから、自分で foreach を書いてHTMLを組み立てます。

    // 取得できるデータのイメージ(※HTMLではありません)
    Array (
      [0] => WP_Term Object ( [term_id] => 1, [name] => お知らせ, [count] => 5 ... )
      [1] => WP_Term Object ( [term_id] => 2, [name] => ブログ, [count] => 12 ... )
    )

🔗 関連ツール