登録済みカスタム分類(タクソノミー)と属する項目(ターム)を自動で取得してリンク付き一覧表示【WordPress】

自動的に登録済みの カスタム分類 (カスタムタクソノミー)を取得して属する項目(ターム)をアーカイブページへのリンク付きでリスト化します。カスタム分類の増減があっても修正する必要が無いのでサイトマップページ等に利用してください。

PR

カスタム分類と項目をリスト化:解説編

登録済みのカスタム分類を取得

<?php
$args = array(
	'public'   => true, // 公開されているもの.
	'_builtin' => false, // 標準搭載を除く.
);
$taxonomies = get_taxonomies( $args, 'objects', 'and' ); // カスタム分類の配列.
?>

2 – 5行目:取得する分類の条件を配列で指定します。_builtin => falseで標準搭載の “カテゴリー” と “タグ” を除外することでカスタム分類のみの取得になります。
6行目:get_taxonomies()で前述の条件に合う分類の情報を取得します。

カスタム分類(タクソノミー)をリスト化

2行目:$taxonomiesが空でない場合に実行します。
4行目:ループで分類毎に処理を行います。ループ内の$tax_valueが1つのカスタム分類のオブジェクトに該当します。
6行目:分類毎に$tax_value->labelで分類名を取得して表示します。

<?php
if ( ! empty( $taxonomies ) ) { // カスタム分類の有無.
	echo "<ul class=\"tax-list\">\n";
	foreach ( $taxonomies as $tax_value ) {
		echo "\t<li class=\"tax-list__item\">\n";
		echo "\t\t" . esc_html( $tax_value->label ) . "\n";
		$args = array(
			'hide_empty' => 0,
		);
		$terms = get_terms( $tax_value->name, $args );
		echo "\t\t<ul class=\"tax-list__child\">\n";
		foreach ( $terms as $term_value ) {
			echo "\t\t\t<li>\n";
			echo '<a href="' . esc_url( get_term_link( $term_value ) ) . '">' . esc_html( $term_value->name ) . "</a>\n";
			echo "\t\t\t</li>\n";
		}
		echo "\t\t</ul>\n";
		echo "\t</li>\n";
	}
	echo "</ul>\n";
}
?>

属する項目(ターム)をリスト化

7行目:取得する項目(ターム)の条件を用意します。
8行目:今回は属する投稿が無い場合の項目も取得するため'hide_empty' => 0としました。
10行目:get_terms()で項目の配列を取得します。
12行目:取得した配列をループで整形していきます。ループ内の$term_valueが個別の項目(ターム)に該当します。
14行目:get_term_link()でアーカイブページのURL、$term_value->nameで項目名を取得しています。

カスタム分類と項目のリスト:完成

コピペで使用可能な完全版です。
クラス名やインデントは環境に合わせて調整してご利用ください。

<?php
$args = array(
	'public'   => true,
	'_builtin' => false,
);
$taxonomies = get_taxonomies( $args, 'objects', 'and' );

if ( ! empty( $taxonomies ) ) {
	echo "<ul class=\"tax-list\">\n";
	foreach ( $taxonomies as $tax_value ) {
		echo "\t<li class=\"tax-list__item\">\n";
		echo "\t\t" . esc_html( $tax_value->label ) . "\n";
		$args = array(
			'hide_empty' => 0,
		);
		$terms = get_terms( $tax_value->name, $args );
		echo "\t\t<ul class=\"tax-list__child\">\n";
		foreach ( $terms as $term_value ) {
			echo "\t\t\t<li>\n";
			echo '<a href="' . esc_url( get_term_link( $term_value ) ) . '">' . esc_html( $term_value->name ) . "</a>\n";
			echo "\t\t\t</li>\n";
		}
		echo "\t\t</ul>\n";
		echo "\t</li>\n";
	}
	echo "</ul>\n";
}
?>

参考リンク
WordPress Codex – get_taxonomies()
WordPress Codex – get_terms()
WordPress Codex – get_term_link()
WordPress Codex – register_taxonomy()


PR

タイトルとURLをコピーしました