カスタム投稿のカテゴリーを取得!タームを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>';
}
カスタム投稿の場合、タクソノミー名が間違っていたりするとエラーが返ってくることがあります。 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に相談に来てくださいね!
「特定のタームが選択されている時だけ表示を変えたい」など、より複雑な条件分岐の相談もお待ちしています!
