Вывести на странице Родительской категории ее подкатегории и их подкатегории, но при переходе на эти категории список не будет меняться

  • Главная
  • БлогIT
  • Вывести на странице Родительской категории ее подкатегории и их подкатегории, но при переходе на эти категории список не будет меняться
<?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();
Контакты

Работаем: с ПН по ПТ, с 08:00 до 17:00 (МСК)
Отдыхаем: в СБ и ВС, чтобы быть в тонусе
и реализовывать самые сложные идеи