WordPress

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

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

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

  1. タームのタイトル一覧を表示する方法
    1. 空のタームを表示する方法
    2. リンク付き一覧を表示する方法
  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); // タームタイトル
}
?>

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

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

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

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

ターム一覧を好きな順番で並び替えたい時はプラグインを利用するのがおすすめです。
おすすめのプラグインは 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); // ターム名
}
?>

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

投稿に紐付いたタームの一覧を表示する場合は 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 ターム情報の取得と表示方法 で紹介しています、合わせてご覧ください。

この記事をシェアする

合わせて読みたい関連記事