WordPressで特定の親カテゴリーに属する子カテゴリーのみを表示したい場合、get_terms() 関数を使って簡単に実現できます。この記事では、親カテゴリーのスラッグに基づいて、その子カテゴリーだけをリスト表示する方法を紹介します。
実装方法
以下のコードを使用すると、親カテゴリーの子カテゴリーをリストとして表示することができます。get_term_by() と get_terms() を組み合わせて、親カテゴリーを基準に子カテゴリーを取得します。
PHP
<ul class="category-nav__list">
<?php
// 親カテゴリーのスラッグを指定
$parent_term = get_term_by('slug', 'parent-category', 'category');
if ($parent_term):
// 子カテゴリーを取得
$terms = get_terms([
'taxonomy' => 'category',
'parent' => $parent_term->term_id,
'hide_empty' => false, // 必要に応じて変更
]);
// 子カテゴリーをループして表示
foreach($terms as $term):
?>
<li class="category-nav__item">
<a class="category-nav__link" href="<?php echo get_term_link($term); ?>">
<?php echo $term->name; ?>
</a>
</li>
<?php
endforeach;
endif;
?>
</ul>解説
get_term_by()
この関数は親カテゴリー(parent-category)をスラッグを基に取得し、そのterm_idを取得します。get_terms()get_terms()関数では、parentパラメーターに親カテゴリーの ID を指定することで、その子カテゴリーのみを取得します。hide_emptyパラメーターをfalseに設定することで、投稿がないカテゴリーも取得できます。- ループで子カテゴリーを表示
取得した子カテゴリーをforeachループで一つずつ表示します。
まとめ
このコードを適切なテンプレートファイルに追加することで、親カテゴリーの子カテゴリーだけをリストとして表示できます。WordPressサイトでカテゴリーに基づいたナビゲーションを作成する際に便利な方法です。

