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サイトでカテゴリーに基づいたナビゲーションを作成する際に便利な方法です。