WordPressに初めからあるタクソノミー(分類)はカテゴリーで、ユーザーが作成できるタクソノミーをカスタムタクソノミーと言います。それらのターム(項目)一覧を表示するプログラムを書き留めておきます。 一覧表示には、wp_list_categories、get_categories、get_terms を使った3つの方法があります。

スポンサーリンク

1 wp_list_categoriesを使用した場合

一番簡単に一覧表示するには wp_list_categoriesです。下の例ではカテゴリーの項目一覧になります。


<?php
	echo '<ul>';
		$args = array (
			'title_li' => '',
		);
		wp_list_categories( $args );
	echo '</ul>';
?>

カスタムタクソノミーの項目を表示する場合は以下の様にします。


$args = array (
	'title_li' => '',
	'taxonomy' => 'カスタム分類名', /* この部分を追加 */
);

2 get_categoriesを使用した場合

この例では親と子供の一覧になります。wp_list_categoriesとは違い、子孫が増えるとそのぶんだけforeachのループが必要になります。parentには1つ上の階層のterm_idをセットしてループを回します。


<?php
echo '<ul>';
	$args = array(
		'parent' => 0,
	);
	$parent_categories = get_categories( $args );
	foreach ( $parent_categories as $parent_category ) {
		echo '<li><a href="' . esc_url( get_category_link( $parent_category->term_id )) . '">' . $parent_category->name . '</a></li>';

		$args = array(
			'parent' => $parent_category->term_id,
		);
		$children_categories = get_categories( $args );
		if ( $children_categories != '' ) {
			echo '<ul class="children">';
			foreach ( $children_categories as $child_category ) {
				echo '<li><a href="' . esc_url( get_category_link( $child_category->term_id )) . '">' . $child_category->name . '</a></li>';
			}
			echo '</ul>';
		}
	}
echo '</ul>';
?>

カスタムタクソノミーの項目を表示する場合は以下の様にします。


$args = array(
	'parent' => 0,
	'taxonomy' => 'カスタム分類名', /* この部分を追加 */
);

また、以下の様にすると両方の一覧が表示されます。


$args = array(
	'parent' => 0,
	'taxonomy' => array( 'category', 'カスタム分類名' ),
);

3 get_termsを使用した場合

get_categoriesの時と同じ様に親と子供の一覧になります。子孫が増えるとそのぶんだけforeachのループが必要になります。parentには1つ上の階層のterm_idをセットしてループを回します。


<?php
echo '<ul>';
	$taxonomies = 'カスタム分類名';
	$args = array(
		'parent' => 0,
	);
	$parent_categories = get_terms( $taxonomies, $args );
	foreach ( $parent_categories as $parent_category ) {
		echo '<li><a href="' . esc_url( get_term_link( $parent_category->term_id )) . '">' . $parent_category->name . '</a></li>';

		$args = array(
			'parent' => $parent_category->term_id,
		);
		$child_categories = get_terms( $taxonomies, $args );
		if ( $child_categories ) {
			echo '<ul class="children">';
			foreach ( $child_categories as $child_category ) {
				echo '<li<>a href="' . esc_url( get_term_link( $child_category->term_id )) . '">' . $child_category->name . '</a></li>';
			}
			echo '</ul>';
		}
	}
echo '</ul>';
?>

カテゴリーの項目を表示するには以下の様にセットします。


$taxonomies = 'category';

また、以下の様にすると両方の一覧が表示されます。


$taxonomies = array( 'category', 'カスタム分類名' );

最後に

設定する値については、WordPress Codexを参照してください。
wp_list_categories
get_categories
get_terms