get_termsやwp_list_categoriesを使って指定したタクソノミーに属するすべてのタームリストを取得する方法

get_termsやwp_list_categoriesを使って指定したタクソノミーに属するすべてのタームリストを取得する方法

get_termsやwp_list_categoriesを使って指定したタクソノミーに属するすべてのタームリストを取得する方法

先日コメントでこのような質問をいただきました。

「指定したタクソノミーのタームをすべて取得したいけど、記事が存在するタームしか表示されない。記事が存在しないタームも取得する方法はないか?」

wp_list_categories や get_terms を使えば、指定したタクソノミーのタームを取得することができますが、デフォルトの状態だと記事が作成されているタームしか取得してくれません。

質問者様は、サイト上の登録フォームで、カスタム分類、カテゴリを連動式にした選択項目を設けたいため、記事が存在していなくてもタームのリストを取得したいということでした。

そこでキーとなるのが hide_empty という引数です。hide_empty はデフォルトでは True(1) になっていて、タームに紐付く記事が存在しない場合はそのターム情報を取得しません。

結論から言っちゃうと hide_empty を False(0) にすれば、投稿のないタームも取得することができます。

get_termsで指定したタクソノミーに属するすべてのタームを取得する

get_terms を使って、指定したタクソノミーの一覧を表示するには、テーマファイル内のリストを表示させたい場所に以下のようなコードを記述します。

<?php
$terms = get_terms( 'タクソノミー名', 'hide_empty=0' );
foreach ( $terms as $term ) {
  echo '<a href="' .get_term_link($term). '">' .$term->name. '</a>';
}
?>

タクソノミー名の部分には、タームを取り出したいタクソノミー名を入れてください。このように記述することで、各タームが div 要素として出力されます。

wp_list_categoriesで指定したタクソノミーに属するすべてのタームを取得する

wp_list_categories については、以前「カスタムタクソノミーを投稿数付きでリスト表示させるためのテーマカスタマイズ」という記事を書きました。この時に紹介したコードを基に紹介したいと思います。

記事が存在しないタームも取得するので、投稿数はなしで表示させます。

<ul><?php wp_list_categories(array('title_li' => '', 'taxonomy' => 'タクソノミー名','hide_empty' => 0)); ?></ul>

こちらもタクソノミー名のところに、タームを取得したいタクソノミー名を入れてください。

あとがき

他に困っている方もいるかもしれないと思ったので、記事にさせていただきました。参考になれば幸いです。

この記事が気に入ったら
いいね!してね♪

Twitter で

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です