[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です。