ミギムキ

[WordPress] タクソノミーのタームURLをリスト形式で表示したい

あるタクソノミー内のタームをテキストリンクで一覧表示したい場合があります。

そんなときにサッと使えるサンプルコードをご紹介します。

サンプルコード

<?php $tax_slug = 'tax_xxx'; $terms = get_terms($tax_slug); if(!empty($terms) && !is_wp_error($terms)) { echo '<ul>'; foreach($terms as $term) { $link = get_term_link($term, $tax_slug); echo '<li><a href="'. $link .'">'. $term->name .'</a></li>'; } echo '</ul>'; } ?>

「tax_xxx」は取得したタクソノミーのスラッグに置き換えてください。

「get_terms」を使用することで、引数に指定したタクソノミーのターム情報を配列で取得することができます。

取得した配列情報を「foreach」ループで一件ずつ取り出して処理していきます。

「get_term_link」関数を使用することで、取り出したターム情報を元にアーカイブページのURLを取得することができます。

あとは取得したURLをaタグのhref属性に設定して出力していきます。

登録件数の多いタームから順に表示したい場合

<?php $tax_slug = 'tax_xxx'; $terms = get_terms($tax_slug, array('orderby' => 'count', 'order' => 'DESC')); if(!empty($terms) && !is_wp_error($terms)) { echo '<ul>'; foreach($terms as $term) { $link = get_term_link($term, $tax_slug); echo '<li><a href="'. $link .'">'. $term->name .'</a></li>'; } echo '</ul>'; } ?>

「get_terms」は引数で様々なタームの取得条件を設定することができます。

例えば「orderby」オプションに「count」を、「order」オプションに「DESC」と指定することで、設定されている記事の多いタームから順番に取得することができます。

アーカイブページで表示中のタームは除外したい場合

<?php $tax_slug = 'tax_xxx'; $terms = get_terms($tax_slug, array('exclude' => array(get_queried_object_id()))); if(!empty($terms) && !is_wp_error($terms)) { echo '<ul>'; foreach($terms as $term) { $link = get_term_link($term, $tax_slug); echo '<li><a href="'. $link .'">'. $term->name .'</a></li>'; } echo '</ul>'; } ?>

アーカイブページでタームの一覧を表示する場合は、表示中のタームのリンクを除外したい場合があります。

そういった場合には「exclude」に除外したいタームのID(スラッグではない点に注意)を指定することで、当該タームは取得されなくなります。

表示中のタームIDは「get_queried_object_id」関数で取得することができます。

ご質問など受け付けています

記事の中でわかりにくかったところ、もっと知りたかったこと、間違っていることなど、何でもお気軽にご連絡ください。

ご連絡は下記フォームを利用いただくか、ツイッターアカウント@flat8migi宛てでもOKです。