【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の通常のカテゴリー表示方法については、以下の記事で紹介しています。