WordPress タクソノミーのターム一覧の表示方法

WordPress タクソノミーのターム一覧の表示方法

WordPress でタクソノミーのターム一覧の表示方法を紹介します。
例えば、タクソノミーアーカイブページでターム一覧を表示したいときに便利な方法です。

  1. タームのタイトル一覧を表示する方法
    1. 空のタームを表示する方法
    2. リンク付き一覧を表示する方法
    3. カレントを付与する方法
  2. ターム一覧を好きな順番で並び替える方法
  3. 投稿に紐付いたタームの一覧を表示する方法

タームのタイトル一覧を表示する方法

タームタイトルの一覧を表示する場合は関数 get_terms を使用します。
次のコードは、タクソノミーのスラッグが products-category のとき、リンクなしのタームタイトル一覧を表示する方法です。

<?php
$terms = get_terms('products-category');
foreach ( $terms as $term ) {
echo esc_html($term->name); // タームタイトル
}
?>

タクソノミーのスラッグは任意の値に変更してご利用ください。
例えば、タイトルをタグで囲いたい場合は次のようにします。

<?php
$terms = get_terms('products-category');
foreach ( $terms as $term ) {
echo '<span>'.esc_html($term->name).'</span>'; // タームタイトル
}
?>

空のタームを表示する方法

ここでの空のタームは「投稿の紐付けがないターム」を指します。
通常は投稿と紐付けがないタームは表示されません。そこで、パラメーターを調整することで空のタームを表示します。
次のコードは、パラメーター hide_empty=0 を追加して空のタームを表示する方法です。

<?php
$terms = get_terms('products-category','hide_empty=0');
foreach ( $terms as $term ) {
echo esc_html($term->name); // タームタイトル
}
?>

リンク付き一覧を表示する方法

タームのタイトルをリンク付きで表示する場合は、タームの情報からリンク情報(アーカイブページのURL)を抜き出します。
次のコードは、リンク付きのタームタイトルを表示する方法です。

<?php
$terms = get_terms('products-category');
foreach ( $terms as $term ) {
echo '<a href="'.get_term_link($term).'">'.$term->name.'</a>';
}
?>

カレントを付与する方法

タクソノミーアーカイブページで、表示中のタームアーカイブに一致するタームに、カレントクラスを付与したい場合は、WordPress で get_terms を使ったターム一覧の表示方法で解説しています。

ターム一覧を好きな順番で並び替える方法

ターム一覧を好きな順番で並び替えたい時はプラグインの利用がおすすめです。

おすすめのプラグインは Intuitive Custom Post Order
管理画面上で項目をドラッグ&ドロップするだけで好きな順番に変更が可能。管理画面で並び替えた順番がそのまま表示に反映されます。

その他には、プラグイン PS Taxonomy Expander などもありますが、表示の際にパラメーター orderby=order を追加する必要があり、少し手間がかかります。
このプラグインはタームの単一選択も設定できるので、リクエストにあったプラグインを選択しましょう。
参考までに PS Taxonomy Expander を使用した時の記述例を紹介します。

<?php
$terms = get_terms('products-category','orderby=order');
foreach ( $terms as $term ) {
echo esc_html($term->name); // ターム名
}
?>

※PS Taxonomy Expander はクイック編集が使用できなくなる場合もあるので注意が必要。

投稿に紐付いたタームの一覧を表示する方法

投稿に紐付いたタームの一覧を表示する場合は wp_get_object_terms() を使用します。
次のコードは、投稿に紐づくタームのタイトル一覧をリンク付きで表示する方法です。

<?php // 投稿に紐付いてるタームのリンク付きタイトル一覧を表示
$custom_post_tag = 'products-category'; // タクソノミーのスラッグを指定
$custom_post_tag_terms = wp_get_object_terms($post->ID, $custom_post_tag);
if(!empty($custom_post_tag_terms)){
if(!is_wp_error( $custom_post_tag_terms )){
foreach($custom_post_tag_terms as $term){
$tag_term_link = get_term_link($term->slug, $custom_post_tag);
$tag_term_name = $term->name;
echo '<a href="'.$tag_term_link.'">'.$tag_term_name.'</a>';
}
}
}
?>

まとめ

WordPress のタクソノミーのターム一覧を表示する方法を紹介しました。
このほかに、リンク以外の情報の取得や表示方法などを WordPress ターム情報の取得と表示方法 で紹介しています、こちらも合わせてご覧ください。