the_terms()でカスタムタクソノミーを表示する方法【WordPress】

the_terms()でカスタムタクソノミーを表示する方法 WordPress

the_terms()でタクソノミーをテーマに出力する

WordPressでカスタムタクソノミーを作ったはいいけど、「テーマ側でどうやって表示すればいいの?」と悩んだことはありませんか?

カテゴリーならthe_category()、タグならthe_tags()という専用関数がありますが、カスタムタクソノミーにはそれがありません。そこで使うのがthe_terms()です。この記事ではthe_terms()の基本の使い方から、リンクなしで出力する方法まで実装コード付きで紹介します。

カスタムタクソノミーをfunctions.phpで登録する方法【WordPress】
こんにちは!コーダーのゆうしです。WordPressのカスタム投稿タイプを使っていると「カテゴリーとは別に独自の分類を追…

↑タクソノミーを登録する方法はこちら

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の真/偽フィールドでチェックした投稿だけ表示する方法【WordPress】
こんにちは!コーダーのゆうしです。WordPressで「新製品だけ一覧に表示したい」「おすすめフラグが立っている投稿だけ…

↑ ACFの条件分岐によって表示を切り替える方法こちら

まとめ

カスタムタクソノミーの表示にはthe_terms()またはget_the_terms()を使います。

  • リンク付きでそのまま出力 → the_terms()
  • リンクなし・自由にHTMLを組みたい → get_the_terms()

どちらも第2引数にタクソノミーのスラッグを指定するだけなので、覚えておくと応用が広がります。カスタム投稿タイプと組み合わせることで、WordPressの表現力がぐっと上がりますよ。

関連記事:WP_Queryで投稿を日付順・ランダムに並び替える方法

コーディングの委託・お仕事に関するお問い合わせはこちらからどうぞ。

タイトルとURLをコピーしました