Классы в списках рубрик

Если через виджет выводить сисок рубрик в сайдбаре, то вордпресс автоматом присваивает классы родительским элементам и текущей рубрике. Но если вложенность большая, например, 3, то главный родительский ээлемент теряет свой класс. Например

Книги

  • детективы

— Шерлок Холмс

В данном случае, при выборе пункта Шерлок Холмс раздел Книги теряет класс родительской рубрики. Как можно сделать так, чтобы главный родитель всегда оставался таковым?

Ну вот такой обходчик

class Walker_Category_Parents extends Walker_Category {
 
    function start_el(&$output, $category, $depth, $args) {
        global $wpdb;
        extract($args);
 
        $cat_name = esc_attr( $category->name );
        $cat_name = apply_filters( 'list_cats', $cat_name, $category );
        $link = '<a href="' . esc_attr( get_term_link($category) ) . '" ';
        $link .= 'title="' . esc_attr( strip_tags( apply_filters( 'category_description', $category->description, $category ) ) ) . '"';
        $link .= 'rel="'.$category->slug.'" ';
        $link .= '>';
        $link .= $cat_name . '</a>';
        if ( 'list' == $args['style'] ) {
            $output .= "\t<li";


            // получаем дочерние рубрики  
            $children = $wpdb->get_results( "SELECT term_id FROM $wpdb->term_taxonomy WHERE parent=".$category->term_id );
 
            $children_count = count($children);
 
            $has_children = ($children_count != 0) ? ' parent-category' : '';
 
            $class = 'cat-item cat-item-' . $category->term_id . $has_children;
            if ( !empty($current_category) ) {

                // текщая рубрика
                $_current_category = get_term( $current_category, $category->taxonomy );

                // подсвечиваем текущую
                if ( $category->term_id == $current_category )
                    $class .=  ' current-cat';
                
                elseif ( $category->term_id == $_current_category->parent )
                    $class .=  ' current-cat-parent';

            }
            $output .=  ' class="' . $class . '"';
            $output .= ">$link\n";
        } else {
            $output .= "\t$link<br />\n";
        }
    }
}

Но непонятно как сделать так чтобы при открытой рубрике Шерлок Холмс родителями считались две рубрики, т.е. присваивался класс current-cat-parent) рубрикам Деттективы и книги, а не только для Книг.

Anonymous
Отправить
Ответ на: