Я хочу отображать в качестве ссылок родительские категории (но не категории дедов) только при просмотре последней / самой глубокой категории. Чтобы быть более выразительным, когда я просматриваю категории, у меня есть некоторый код, который получает подкатегории / дочерние элементы текущей категории, в которой я нахожусь. Код такой:
function sub_cats( $args = array() ) {
$terms = get_terms([
'taxonomy' => get_queried_object()->taxonomy,
'parent' => get_queried_object_id(),
]);
foreach ( $terms as $term) {
echo '<li>';
echo '<a href="' . get_term_link( $term ) . '">' . $term->name . '</a>';
echo '<li>';
}
}
Так как я достигаю последней / самой глубокой категории / child каждого дерева категорий, я не вижу других категорий для отображения. Теперь меня просят отобразить в виде ссылок только прямые родительские категории (не дедушки) последней / самой глубокой категории и только потом.
Я понял, что нужно проверить, есть ли дети в текущей категория, и если они это делают, запустите приведенный выше код. Если нет, тогда получите родительскую категорию. Но здесь я взорваю все это, потому что взамен получаю все атрибуты и категории в моей базе данных.
//Get current category
$term = get_queried_object();
$children = get_terms( $term->taxonomy, array(
'parent' => $term->term_id,
'hide_empty' => false
) );
//If this category has children then get me the children
if($children) {
$terms = get_terms([
'taxonomy' => get_queried_object()->taxonomy,
'parent' => get_queried_object_id(),
]);
foreach ( $terms as $term) {
echo '<li>';
echo '<a href="' . get_term_link( $term ) . '">' . $term->name . '</a>';
echo '<li>';
}
} else { //ELSE get me only the parent category -> HERE IS MY PROBLEM
$caterms = get_terms( $product->ID, 'product_cat' );
foreach ($caterms as $category) {
if($category->parent == 0){
echo '<li>';
echo '<a href="' . get_term_link( $category ) . '">' . $category->name . '</a>';
echo '<li>';
}
}
}
Пожалуйста, помогите