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>';
}
?>

ターム一覧を任意の並び順にする方法

ターム一覧を任意の並び順にしたい場合、プラグインを利用する方法が簡単です。
例えば、プラグイン PS Taxonomy Expander を使用すると、パラメーターに orderby=order を追加するだけで、プラグインを使用して並び替えた順番で表示することができます。

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

そのほか、個人的におすすめのプラグインは Intuitive Custom Post Order などがあります。こちらの方が管理画面上で、タームをドラッグ&ドロップするだけで順番を変更できるので運用もしやすくおすすめです。

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

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

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