Отображение списка терминов подкатегорий на страницах архива подкатегорий WooCommerce

В Woocommerce я использую Получите подкатегории текущей категории продукта в архивах Woocommerce функция ответа, чтобы отобразить список подкатегорий на страницах родительской категории

Но мне нужно применить это только к КОНКРЕТНЫМ категориям продуктов, и использование массива с несколькими идентификаторами категорий кажется не идеальным.

Мне нужно отображать список только для первых дочерних категорий, поэтому, например, одна из моих основных родительских категорий - это Одежда, затем подкатегория «Рубашки», а затем подкатегория «Без рукавов». Мне нужно отобразить его только в первых подкатегориях, в этом примере «Рубашки».


person Arkansas44    schedule 05.08.2020    source источник
comment
Вы имеете в виду - вам нужно отображать это только в шаблонах определенных категорий?   -  person Az Rieil    schedule 05.08.2020
comment
Я отредактировал свой вопрос, чтобы уточнить.   -  person Arkansas44    schedule 05.08.2020


Ответы (1)


Чтобы отображать только первую подкатегорию на страницах архива основной категории, используйте:

add_action('woocommerce_before_shop_loop', 'display_sub_subcategories', 10 );
function display_sub_subcategories() {
    $obj      = get_queried_object();
    $taxonomy = 'product_cat';

    if ( is_a($obj, 'WP_Term') && $taxonomy === $obj->taxonomy && 0 != $obj->parent ) {
        // Get sub-subcategories of the current subcategory
        $terms = get_terms([
            'taxonomy'    => $taxonomy,
            'hide_empty'  => true,
            'parent'      => $obj->term_id
        ]);

        if ( ! empty($terms) ) :

        $output = '<ul class="subcategories-list">';

        // Loop through product subcategories WP_Term Objects
        foreach ( $terms as $term ) {
            $term_link = get_term_link( $term, $taxonomy );

            $output .= '<li class="'. $term->slug .'"><a href="'. $term_link .'">'. $term->name .'</a></li>';
        }

        echo $output . '</ul>';
        endif;
    }
}
person LoicTheAztec    schedule 05.08.2020
comment
нет, мне нужно отображать ВСЕ подкатегории на страницах подкатегорий. Так, например, у меня есть родительская категория hircharchy: одежда, подкатегория: рубашки, а затем несколько подкатегорий, таких как без рукавов, поло, топы и т. Д. И мне нужно отобразить ВСЕ подкатегории на страницах подкатегорий. Таким образом, без рукавов, поло и топы должны отображаться на странице «Рубашки». - person Arkansas44; 06.08.2020
comment
@ Arkansas44 Хорошо, я этого раньше не слышал. Обновлено… Попробуйте, чтобы убедиться, что это то, что вам нужно. Если этот ответ отвечает на ваш вопрос, вы можете принять ответ, и, если хотите / хотите, вы также можете проголосуйте за и за ответ, спасибо. - person LoicTheAztec; 06.08.2020
comment
Да, это работает, но он также добавляет html ‹ul class = subcategory-list› ‹/ul› на страницы подкатегорий. Он не отображается в них, а добавляет в эти архивы пустой div ... - person Arkansas44; 06.08.2020
comment
@ Arkansas44 Обновлено… - person LoicTheAztec; 06.08.2020