WP Вывод категорий и подкатегорий
Есть таксономия с категориями которая выглядит подобным образом.
где Кухни и Шкафы - родительские категории, а остальное - подкатегории.
Как совершить вывод только родительских категорий ?
А так же каким образом потом вывести подкатегории после перехода по категории.
Пытался выводить и оно просто выводит всё сразу.
Есть post_type = 'furniture'. У него taxonomy = 'category'.
На главной странице есть вывод категорий.
<?php
$cats = get_terms([
'taxonomy' => 'category',
'hide_empty' => false,
'parent' => 0,
]);
foreach ($cats as $cat) :
?>
<a href="<?php echo get_term_link($cat->term_id, 'category') ?>">
<?php endforeach; ?>
ссылка выглядит как /category/term-id/ При клике происходит переход на category.php шаблон. В нём пытаюсь выводить подкатегории
$cats = get_terms( [
'taxonomy' => 'category',
'parent' => get_queried_object_id();,
] );
Если пытаться ставить parent => 0 - оно выводит только 'Кухни'
Ответы (2 шт):
Для получения всех родительских категорий нужно подставить parent = 0 в запросы.
Самый простой способ это использовать шорткод product_categories:
echo do_shortcode( '[product_categories parent=0]' );
Чтобы получить все категории используйте get_terms
$product_cats = get_terms( [
'taxonomy' => 'product_cat',
'parent' => 0
] );
Чтобы получит подкатегории конкретной категории вместо parent нужно подставить get_queried_object_id().
echo do_shortcode( '[product_categories parent=' . get_queried_object_id() . ']' );
$product_cats = get_terms( [
'taxonomy' => 'product_cat',
'parent' => get_queried_object_id()
] );
Решил свою проблему. Вывод дочерних категорий.
<?php
$taxonomy = 'category';
$term = get_queried_object();
$children = get_terms(
$term->taxonomy, array(
'parent' => $term->term_id,
'hide_empty' => false
)
);
print_r ($term);
foreach ($children as $subcat) :
?>
<span><?php echo $subcat -> name ?></span>
<?php endforeach; ?>