Получение пунктов меню, таких как get_pages

Мне нужен способ создания пользовательского HTML-шаблона для функции wp_nav_menu. Я слышал о пользовательских классах walker, но они не кажутся достаточно полезными для достижения того, что я пытаюсь сделать; по крайней мере, насколько я знаю из-за отсутствия документации по функциям ходока. То, что мне нужно сделать, – это добавить класс «hoverable» во все пункты меню верхнего уровня. Мне нужно только меню, чтобы перейти на два уровня; верхний уровень, затем элементы детского меню. Мне нужно добавить класс «верхнего уровня» ко всем элементам привязки элементов меню, которые имеют подменю. Мне нужно, чтобы все списки подменю имели класс sub-nav. И мне нужно, чтобы все последние элементы списка подменю (li) имели класс «последний».

Вот код, который у меня есть прямо сейчас, который генерирует мое меню точно так, как мне нужно, чтобы он был сгенерирован с помощью функции get_pages:

<?php $pages = get_pages(array( 'parent' => 0, 'sort_order' => 'ASC', 'sort_column' => 'menu_order' )); $num_pages = count($pages); $p = 0; $exclude = '"pastor.php","service.php","gallery.php","audio.php","video.php"'; $exclude_list = $wpdb->get_results("SELECT GROUP_CONCAT(t1.ID) AS IDS FROM " . $wpdb->posts . " AS t1 INNER JOIN " . $wpdb->postmeta . " AS t2 ON (t1.ID = t2.post_id) WHERE t1.post_type = 'page' AND (t1.post_status = 'publish' OR t1.post_status = 'private') AND t2.meta_key = '_wp_page_template' AND t2.meta_value IN (" . $exclude . ") ORDER BY t1.post_date DESC"); foreach($pages as &$page) : $children = get_pages(array( 'sort_order' => 'ASC', 'sort_column' => 'menu_order', 'hierarchical' => 0, 'childof' => $page->ID, 'parent' => $page->ID, 'exclude' => $exclude_list[0]->IDS )); $num_children = count($children); $has_children = $num_children > 0; ?> <li class="nav-item<?php echo ($has_children ? ' hoverable' : '') . ($num_pages == ++$p ? ' last' : '') . ($page->post_name === $root_parent->post_name ? ' active' : '')?>"> <a href="<?php echo get_page_link($page->ID)?>" class="top-level"><?php echo $page->post_title?></a> <?php if($has_children) : ?> <ul class="sub-nav"> <?php $c = 0; foreach($children as &$child) : ?> <li class="nav-item<?php echo ($num_children == ++$c ? ' last' : '')?>"> <a href="<?php echo get_page_link($child->ID)?>"><?php echo $child->post_title?></a> </li> <?php endforeach;?> </ul> <?php endif;?> </li> <?php endforeach; ?> 

Есть ли способ вытащить элементы меню в многомерном массиве заказов, чтобы я мог просто перебирать их и генерировать вышеприведенный шаблон вручную, а не весь этот wp_nav_menu и ходок без смысла?