@80689248440

Какая функция похожа на term_is_ancestor_of() или get_term_children() но чтоб проверяла или выводила только первый уровень вложенности?

get_term_children() возвращает все дочерние разделы элемента таксономии.
а term_is_ancestor_of() проверяет является ли второй термин дочерним к первому (проверяются все уровни вложенности).

Нужно получить только дочек первого уровня, а у меня выводятся все
$prodcat = get_terms('product_cat', 'orderby=name&hide_empty=0&parent=0&hierarchical=0');// получим все верхние или с parent

foreach ($prodcat as $childcat) {//пройдём по верхним
	
$termID = $childcat->term_id; // id верхних
$taxonomyName = "product_cat";
$termchildren = get_term_children( $termID, $taxonomyName );// только id дочерних в массиве всех уровней а нужен только первый

echo $childcat->name;
echo ' - id ';
echo $childcat->term_id;
echo '<ul>';

foreach ($termchildren as $child) {
	$term = get_term_by( 'id', $child, $taxonomyName );
	echo '<li><a href="' . get_term_link( $term->term_id, $term->taxonomy ) . '">' . $term->name . '</a></li>';
}
echo '</ul>';
}

Должно получиться так:

категория 1
подкатегория 1
подкатегория 2
подкатегория подкатегории 2 // этого не должно выводиться
...

категория n
подкатегория 1
подкатегория 2
...
  • Вопрос задан
  • 402 просмотра
Решения вопроса 1
Использовать get_terms, там есть параметр parent, который как раз нужное и выдаст.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы