WordPress

【WordPress】親カテゴリーと子カテゴリーをul要素の入れ子で一覧表示する方法

WordPress

【WordPress】親カテゴリーと子カテゴリーをul要素の入れ子で一覧表示する方法

WordPress関数の「get_categories()」を使った、親カテゴリーと子カテゴリーを一覧で表示する方法についてご紹介します。
登録されているカテゴリーを一覧で表示しますので、主にサイドバーで利用するのに便利です。

取得・出力したいHTMLのイメージはこちら

<ul>
	<li><a href="">親カテゴリー</a></li>
	<li>
		<a href="">親カテゴリー</a>
		<ul>
			<li><a href="">子カテゴリー</a></li>
			<li><a href="">子カテゴリー</a></li>
			<li><a href="">子カテゴリー</a></li>
		</ul>
	</li>
</ul>

上記のようなHTMLの階層でカテゴリーを取得・出力したいと思います。
aタグのhref属性には、カテゴリーページへのリンクを入れる想定です。

親カテゴリーと子カテゴリーの一覧を取得する

<ul>
	<?php
	$categories = get_categories('parent=0');
	foreach($categories as $category): ?>
	<li>
		<a href="<?php echo get_category_link($category->term_id); ?>"><?php echo $category->name; ?></a>
		<?php 
		$childs = get_categories('child_of='.$category->term_id);
		if($childs):
		?>
		<ul>
			<?php foreach($childs as $child): ?>
			<li>
				<a href="<?php echo get_category_link($child->term_id); ?>"><?php echo $child->name; ?></a>
			</li>
			<?php endforeach; ?>
		</ul>
		<?php endif; ?>
	</li>
	<?php endforeach; ?>
</ul>

上記のコードを記述すると、先に紹介したHTMLのイメージで、カテゴリー表示を実装することができます。

重要なポイントだけ解説します。
get_categories(‘parent=0’)」は、親カテゴリー(最上位のカテゴリー)のみを取得することができます。
get_categories(‘child_of=’.$category->term_id)」は、親カテゴリーのIDを入れることで、子カテゴリーを取得することができます。
if($childs)」の条件分岐で、子カテゴリーがあれば取得するように実装しています。

まとめ

親カテゴリーと子カテゴリーを一覧で表示する方法についてご紹介しました。
ul要素が入れ子になっているHTML階層を表示したい場合は、こちらの方法が参考になるかと思います。
是非試してみてください。


WordPressの通常のカテゴリー表示方法については、以下の記事で紹介しています。

あなたにおすすめの記事