先日コメントでこのような質問をいただきました。
「指定したタクソノミーのタームをすべて取得したいけど、記事が存在するタームしか表示されない。記事が存在しないタームも取得する方法はないか?」
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>
こちらもタクソノミー名のところに、タームを取得したいタクソノミー名を入れてください。
あとがき
他に困っている方もいるかもしれないと思ったので、記事にさせていただきました。参考になれば幸いです。