Отображение подкатегорий и их данных таксономии
Я хочу вывести сведения о подкатегориях таксономии
$getTerms = get_terms($taxonomy, $args);
print_r($getTerms);
Когда я распечатываю вышеприведенное, оно возвращает объект. Но нет никакой разницы в значениях между родительскими и подкатегориями. Первая - это родительская таксономия, а вторая - подкатегория.
[1] => stdClass Object
(
[term_id] => 23
[name] => Corporate teams
[slug] => corporate-teams
[term_group] => 0
[term_taxonomy_id] => 23
[taxonomy] => team_names
[description] => Description of corporate team
[parent] => 0
[count] => 0
[image_id] => 0
)
[3] => stdClass Object
(
[term_id] => 25
[name] => Team name 1
[slug] => team-name-1
[term_group] => 0
[term_taxonomy_id] => 25
[taxonomy] => team_names
[description] => Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin nec pellentesque sapien.
[parent] => 22
[count] => 1
[image_id] => 90
)
Как бы я запросил часть этого объекта (вероятно, как foreach или как WP_Query), Чтобы он возвращал подкатегории и их релевантные значения (заголовок, изображение и т. Д.)? Является ли функция 'get_terms()' правильный путь для этого?
3 answers
Вы можете использовать аргумент parent
в get_terms()
, чтобы получить прямых потомков термина.
Вы можете использовать аргумент child_of
, чтобы получить всех потомков термина.
Что-то вроде этого.
$parent_id = 32;
$args = array(
'parent' => $parent_id
);
$terms = get_terms( $taxonomy, $args );
print_r( $terms );
Если вы хотите программно получить родительские термины и в цикле получить подкатегории, вы могли бы сделать что-то вроде этого.
$taxonomy = 'your_tax';
$args = array(
'parent' => 0 // to get only parent terms
);
$terms = get_terms( $taxonomy, $args );
foreach( $terms as $term ) {
$children = get_terms( $taxonomy, array(
'parent' => $term->term_id;
) );
print_r( $children );
}
Начиная с wordpress 4.5.0, таксономии должны передаваться через аргумент "таксономия" в массиве $args:
$parent_id = 32;
$args = array(
'taxonomy' => $taxonomy,
'parent' => $parent_id
);
$terms = get_terms( $args );
print_r( $terms );
<div class="categories-item">
<?php
$wcatTerms = get_terms('service_cat', array('hide_empty' => 0, 'parent' =>0));
foreach($wcatTerms as $wcatTerm) :
?>
<button class="accordion"><?php echo $wcatTerm->name; ?></button>
<div class="panel">
<?php
$wcatTerms1 = get_terms('service_cat', array('hide_empty' => 0, 'parent' =>$wcatTerm->term_id));
foreach($wcatTerms1 as $wcatTerm1) :
?>
<a href="<?php echo get_term_link( $wcatTerm1->slug, $wcatTerm1->taxonomy ); ?>"><?php echo $wcatTerm1->name; ?></a>
<?php endforeach ; ?>
</div>
<?php endforeach ; ?>
<!-- <button class="accordion">Section 3</button>
<div class="panel">
</div> -->
</div>