<?php
get_header();
// Получаем текущую категорию
$current_category = get_queried_object();
// Определяем родительскую категорию для текущей категории (если она есть)
if ($current_category->parent == 0) {
$parent_category_id = $current_category->term_id; // Если у текущей категории нет родителя, она сама становится родительской
} else {
// Если у текущей категории есть родитель, находим самую верхнюю родительскую категорию
$ancestors = get_ancestors($current_category->term_id, 'productscat');
$parent_category_id = (count($ancestors) > 0) ? end($ancestors) : $current_category->parent;
}
// Получаем подкатегории родительской категории
$child_categories = get_terms(array(
'taxonomy' => 'productscat', // Укажи здесь свою таксономию, если это кастомная
'child_of' => $parent_category_id,
'hide_empty' => false,
));
// Массив для отслеживания выведенных категорий
$displayed_categories = array();
if ($child_categories && !is_wp_error($child_categories)) :
?>
<ul>
<?php foreach ($child_categories as $category) : ?>
<?php
// Проверяем, была ли уже выведена категория
if (in_array($category->term_id, $displayed_categories)) {
continue; // Пропускаем, если уже выведена
}
?>
<li>
<a href="<?php echo get_term_link($category); ?>"><?php echo $category->name; ?></a>
<?php
// Проверяем, является ли категория текущей или сестринской
if ($category->term_id == $current_category->term_id || $category->parent == $current_category->term_id || $current_category->parent == $category->term_id) :
// Выводим подкатегории текущей категории
$subcategories = get_terms(array(
'taxonomy' => 'productscat',
'parent' => $category->term_id,
'hide_empty' => false,
));
if ($subcategories) :
?>
<ul>
<?php foreach ($subcategories as $subcategory) : ?>
<li><a href="<?php echo get_term_link($subcategory); ?>"><?php echo $subcategory->name; ?></a></li>
<?php
// Добавляем подкатегорию в массив выведенных категорий
$displayed_categories[] = $subcategory->term_id;
?>
<?php endforeach; ?>
</ul>
<?php endif; ?>
<?php endif; ?>
<?php
// Добавляем категорию в массив выведенных категорий
$displayed_categories[] = $category->term_id;
?>
</li>
<?php endforeach; ?>
</ul>
<?php
endif;
get_footer();