Пользовательская структура HTML в wp_list_categories

Я пытаюсь выполнить навигацию Ajax для категорий, и для этого мне нужен код, чтобы выглядеть примерно так:

<ul> <li data-level="1">Parent Category</li> <li data-level="1">Parent Category <ul class="children"> <li class="sub-category" data-level="2">Subcategory <ul class="children"> <li class="sub-sub-category" data-level="3">Sub Subcategory</li> </ul> </li> </ul> </li> </ul> 

У меня уже есть определенный ходок, который создает нечто подобное, а также добавляет div вокруг дочерних элементов ul и класса к категориям, которые не содержат дочерних категорий. Он отлично работает для первого уровня подкатегорий, но я застрял там и, похоже, не смог правильно создать следующий уровень подкатегорий. Это ходок у меня:

 class Navigation_Catwalker extends Walker_Category { // Configure the start of each level function start_lvl(&$output, $depth = 0, $args = array()) { $output .= ""; } // Configure the end of each level function end_lvl(&$output, $depth = 0, $args = array()) { $output .= ""; } // Configure the start of each element function start_el( &$output, $category, $depth = 0, $args = array(), $id = 0) { // Set the category name and slug as a variables for later use $cat_name = esc_attr( $category->name ); $cat_name = apply_filters( 'list_cats', $cat_name, $category ); $cat_slug = esc_attr( $category->slug ); $n_depth = $depth + 1; $termchildren = get_term_children( $category->term_id, $category->taxonomy ); if(count($termchildren)===0){ $class .= 'i-dont-have-kids'; } // Configure the output for the top list element and its URL if ( $depth === 0 ) { $link = '<a class="parent-category-dropdown" href="#"' . '>' . $cat_name . '</a>'; $indent = str_repeat("\t", $depth); $output .= "\t<li class='parent-category $class " . $cat_slug . "' data-level='$n_depth'>$link\n$indent<div class='children'><ul>\n<li class='parent-name' data-level='$n_depth'>" . $cat_name . "</li>"; } // Configure the output for lower level list elements and their URL's if ( $depth === 1 ) { $link = '<a href="#"' . '>' . $cat_name . '</a>'; $output .= "\t<li class='sub-category $class' data-level='$n_depth'>$link\n"; } if( $depth > 1) { $link = '<a href="#"' . '>' . $cat_name . '</a>'; $output .= "\n<li class='sub-category $class' data-level='$n_depth'>$link\n"; } } // Configure the end of each element function end_el(&$output, $page, $depth = 0, $args = array() ) { if ( $depth === 0 ) { $indent = str_repeat("\t", $depth); $output .= "$indent</ul>\n</div>\n"; } if ( $depth > 0 ) { $output .= "</li>"; } } } 

У кого-нибудь есть идеи?

Solutions Collecting From Web of "Пользовательская структура HTML в wp_list_categories"

Если кто-то найдет это когда-нибудь, я смогу это решить, и я использовал tis walker:

 class Navigation_Catwalker extends Walker_Category { // Configure the start of each level function start_lvl(&$output, $depth = 0, $args = array()) { $output .= ""; } // Configure the end of each level function end_lvl(&$output, $depth = 0, $args = array()) { $output .= ""; } // Configure the start of each element function start_el( &$output, $category, $depth = 0, $args = array(), $id = 0) { // Set the category name and slug as a variables for later use $cat_name = esc_attr( $category->name ); $cat_name = apply_filters( 'list_cats', $cat_name, $category ); $cat_slug = esc_attr( $category->slug ); $n_depth = $depth + 1; $termchildren = get_term_children( $category->term_id, $category->taxonomy ); $class = ''; if(count($termchildren)===0){ $class .= 'i-dont-have-kids'; } // Configure the output for the top list element and its URL if ( count($termchildren)>0) { $link = '<a class="parent-category-dropdown" href="#"' . '>' . $cat_name . '</a>'; $indent = str_repeat("\t", $depth); $output .= "\t<li class='parent-category $class " . $cat_slug . "' data-level='$n_depth'>$link\n$indent<div class='children'><ul>\n<li class='parent-name'>" . $cat_name . "</li>"; } // Configure the output for lower level list elements and their URL's if ( count($termchildren)===0) { $link = '<a href="#">' . $cat_name . '</a>'; $output .= "\t<li class='sub-category $class' data-level='$n_depth'>$link\n"; } // if( $depth > 1) { // $link = '<a href="#">' . $cat_name . '</a>'; // $output .= "\n<li class='sub-category $class' data-level='$n_depth'>$link\n"; // } } // Configure the end of each element function end_el(&$output, $category, $depth = 0,$args = array()) { $termchildren = get_term_children( $category->term_id, $category->taxonomy ); if (count($termchildren)>0) { $indent = str_repeat("\t", $depth); $output .= "$indent</ul>\n</div>\n"; } if (count($termchildren)===0 ) { $output .= "</li>"; } } }