本ページはプロモーションが含まれています

カスタム投稿のカテゴリーを取得!タームを1つ・複数出す実装コード

公開日

さて、昨日は「標準投稿」のカテゴリー取得について解説しましたが、実務の現場では「カスタム投稿」を扱う機会が非常に多いですよね。施工事例やスタッフ紹介など、カスタム投稿で設定した独自のカテゴリー(タクソノミー)を表示する方法は、標準投稿とは少し書き方が異なります。

今回は、カスタム投稿でタクソノミー(ターム)を1つだけ、または複数取得して表示する実装コードを解説します!

この記事でマスターできること
  • カスタム投稿専用の関数 get_the_terms の使い方
  • タクソノミー名を指定して特定のタームを取得する方法
  • 標準投稿(昨日紹介した方法)との決定的な違い

昨日の記事をまだ読んでいない方は、まずこちらで「基本」を抑えておくと理解がスムーズですよ。
参考:WordPressカテゴリー取得術!1つだけ・複数を使い分ける実装コード

1. カスタム投稿では `get_the_terms` を使う

標準投稿では get_the_category() を使いましたが、カスタム投稿では get_the_terms() を使用します。最大の違いは、「どのタクソノミーから取得するか」という名前(スラッグ)を指定する必要がある点です。

【個別指定】1つだけ表示する場合

// 第2引数にタクソノミー名(例:news_category)を指定します
$terms = get_the_terms( get_the_ID(), 'news_category' );

if ( !empty($terms) && !is_wp_error($terms) ) {
    // 最初の1つを取得
    $term = array_shift($terms);
    echo '<span class="taxonomy-item">' . esc_html($term->name) . '</span>';
}
現場の注意点:WP_ERRORのチェック

カスタム投稿の場合、タクソノミー名が間違っていたりするとエラーが返ってくることがあります。 is_wp_error() でのチェックを入れるのが、現場で「止まらないサイト」を作るための鉄則です。

2. 全てのタームをループで表示する

複数のタームが設定されている場合に、それらを全て並べて表示する方法です。昨日の foreach ループと同じ考え方ですが、指定方法に注目してください。

$terms = get_the_terms( get_the_ID(), 'news_category' );

if ( !empty($terms) && !is_wp_error($terms) ) {
    echo '<div class="taxonomy-label-wrap">';
    foreach ( $terms as $term ) {
        $term_link = get_term_link( $term );
        echo '<a href="' . esc_url($term_link) . '" class="taxonomy-item">' . esc_html($term->name) . '</a>';
    }
    echo '</div>';
}

このように、カスタム投稿(サブループ)で記事一覧を作る際などは、このコードが必須になります。メインループとの違いに不安がある方は、以下の記事もチェックしておきましょう。
参考:メインループとサブループの違いを徹底解説!自作テーマでハマらないための基礎知識

3. 複数表示のCSSと「gap」の活用

表示したタームを綺麗に並べるには、Flexboxの gap が便利です。スマホで画面幅が狭くなった時も、自動で適切な隙間を保ちながら折り返してくれます。

.taxonomy-label-wrap {
    display: flex;
    flex-wrap: wrap; /* 折り返しを許可 */
    gap: 8px 12px;   /* 上下に8px、左右に12pxの隙間 */
}

2026年現在のブラウザ環境であれば、 gap はほぼ全ての環境で安心して使えます。メディアクエリでの微調整も忘れずに。
参考:【2026年版】PCから組むメディアクエリ。実務で迷わないブレイクポイントとmax-width活用術

4. まとめ:タクソノミー指定を忘れずに!

カスタム投稿のカテゴリー取得で一番多いミスは、タクソノミー名の指定忘れやスペルミスです。 get_the_terms を使う際は、管理画面で設定したタクソノミーのスラッグをしっかり確認しましょう。

もし、カスタム投稿で独自の入力項目(SCFなど)を設けている場合は、今回のターム取得と組み合わせてさらにリッチな表示が可能になりますよ。
参考:Smart Custom Fields(SCF)の出力方法まとめ|コピペOKな実務用コード集

現場での実装で「どうしても表示されない!」と詰まったら、一度タクソノミー名を見直してみてください。それでも解決しない場合は、いつでもkazoologに相談に来てくださいね!

「特定のタームが選択されている時だけ表示を変えたい」など、より複雑な条件分岐の相談もお待ちしています!