the_terms()でタクソノミーをテーマに出力する
WordPressでカスタムタクソノミーを作ったはいいけど、「テーマ側でどうやって表示すればいいの?」と悩んだことはありませんか?
カテゴリーならthe_category()、タグならthe_tags()という専用関数がありますが、カスタムタクソノミーにはそれがありません。そこで使うのがthe_terms()です。この記事ではthe_terms()の基本の使い方から、リンクなしで出力する方法まで実装コード付きで紹介します。

↑タクソノミーを登録する方法はこちら
the_terms()の基本の書き方
<?php the_terms( get_the_ID(), 'タクソノミー名', '前に付くテキスト', '区切り文字', '後に付くテキスト' ); ?>各パラメータの解説
| 引数 | 内容 |
|---|---|
| 第1引数 | 投稿ID(get_the_ID()でOK) |
| 第2引数 | 表示したいタクソノミーのスラッグ |
| 第3引数 | 出力の前に付けるテキスト(省略可) |
| 第4引数 | タームとタームの区切り文字(デフォルトは, ) |
| 第5引数 | 出力の後に付けるテキスト(省略可) |
実装パターン別コード
① シンプルに出力する
<?php the_terms( get_the_ID(), 'dammy' ); ?>dammyの部分は自分で登録したタクソノミーのスラッグに変えてください。タームがリンク付きで出力されます。
② 区切り文字を変える
<?php the_terms( get_the_ID(), 'dammy', '', ' / ' ); ?>第4引数で区切り文字を指定できます。/や・など、デザインに合わせて変えましょう。
③ 前後にテキストを付ける
<?php the_terms( get_the_ID(), 'dammy', 'ジャンル:', ' / ', '' ); ?>出力例:ジャンル:アクション / RPG
ラベルを付けたいときは第3引数を使います。
④ リンクなしで名前だけ出力したい場合
the_terms()はリンク付きで出力されますが、リンクなしで名前だけ取得したい場合はget_the_terms()を使います。
<?php
$terms = get_the_terms( get_the_ID(), 'dammy' );
if ( $terms && ! is_wp_error( $terms ) ) {
foreach ( $terms as $term ) {
echo '<span class="genre-label">' . esc_html( $term->name ) . '</span>';
}
}
?>各部分の解説
get_the_terms():タームの情報を配列で取得する関数is_wp_error():エラーチェック。タクソノミーが存在しない場合などのエラーを防ぐ$term->name:タームの表示名$term->slug:タームのスラッグ(URLなどに使いたい場合)esc_html():XSS対策のサニタイズ。出力時は必ず使う習慣をつけましょう
躓きやすいポイント
何も出力されない タクソノミーのスラッグが間違っているケースが一番多いです。管理画面の「投稿タイプ → タクソノミー」またはregister_taxonomy()の第1引数に指定したスラッグと完全一致しているか確認してください。
is_wp_error()を省略したらエラーが出た get_the_terms()はタクソノミーが存在しない場合にWP_Errorオブジェクトを返します。is_wp_error()のチェックを省くと、foreachでエラーになることがあるので必ずセットで書きましょう。
タームが紐付けられていない投稿で表示が崩れる get_the_terms()はタームが1件も設定されていない場合にfalseを返します。if ( $terms && ! is_wp_error( $terms ) )の条件分岐でしっかり出し分けることが大切です。

↑ ACFの条件分岐によって表示を切り替える方法こちら
まとめ
カスタムタクソノミーの表示にはthe_terms()またはget_the_terms()を使います。
- リンク付きでそのまま出力 →
the_terms() - リンクなし・自由にHTMLを組みたい →
get_the_terms()
どちらも第2引数にタクソノミーのスラッグを指定するだけなので、覚えておくと応用が広がります。カスタム投稿タイプと組み合わせることで、WordPressの表現力がぐっと上がりますよ。
関連記事:WP_Queryで投稿を日付順・ランダムに並び替える方法
コーディングの委託・お仕事に関するお問い合わせはこちらからどうぞ。

