Добавление класса ul с помощью wp_list_categories Custom Walker

Я пытаюсь достичь чего-то похожего, что это должно быть просто, но вызывает у меня головные боли. Я перечисляю свои категории, используя wp_list_categories, который дает мне это …

<ul> <li>Fruit</li> <li>Vegetables</li> <li>Tinned Goods</li> <li>Dairy Products</li> </ul> 

Все, что я хочу сделать, это добавить класс в ul и li, используя функцию walker, моя функция выглядит так …

 class Walker_Simple_Example extends Walker { var $db_fields = array( 'parent' => 'parent_id', 'id' => 'object_id' ); function start_lvl(&$output, $depth=1, $args=array()) { $output .= "\n<ul class=\"product_cats\">\n"; } function end_lvl(&$output, $depth=0, $args=array()) { $output .= "</ul>\n"; } function start_el(&$output, $item, $depth=0, $args=array()) { $output .= "<li class=\"item\">".esc_attr( $item->name ); } function end_el(&$output, $item, $depth=0, $args=array()) { $output .= "</li>\n"; } } 

Это отлично работает для элементов li и дает им весь класс «item», но класс ul просто не появляется. Может ли кто-нибудь увидеть, где я ошибаюсь?

Solutions Collecting From Web of "Добавление класса ul с помощью wp_list_categories Custom Walker"

Вы должны расширить Walker_Category не основной класс Walker.

 class Walker_Simple_Example extends Walker_Category { function start_lvl(&$output, $depth=1, $args=array()) { $output .= "\n<ul class=\"product_cats\">\n"; } function end_lvl(&$output, $depth=0, $args=array()) { $output .= "</ul>\n"; } function start_el(&$output, $item, $depth=0, $args=array()) { $output .= "<li class=\"item\">".esc_attr( $item->name ); } function end_el(&$output, $item, $depth=0, $args=array()) { $output .= "</li>\n"; } } wp_list_categories(array('walker'=> new Walker_Simple_Example)); 

Теперь это работает. product_class применяется к дочерней сети, но ваш ходок не сохраняет большую часть функциональности по умолчанию.

Если вы хотите присвоить класс родительскому <ul> , это немного сложнее. Это <ul> происходит от самой функции wp_list_categories , а не от ходока. Отключите «заголовок», который, как вы, кажется, не используете, и напишите в обертке <ul> .

 echo '<ul class="product_cats">'; wp_list_categories(array('title_li'=> false)); echo '</ul>';