虽然 提供了 方法来输出菜单,但是如果你想实现超级菜单(mega menu),单靠它就做不到了。
好在有 和 这两个菜单接口,可以先取得扁平化的菜单数组,然后稍稍加工一下就能得到树形结构的菜单数组了。
function c7sky_get_nav_menu_tree( $location ) {
$locations = get_nav_menu_locations();
$menu_id = $locations[$location] ;
$menu_object = wp_get_nav_menu_object($menu_id);
$menu_items = wp_get_nav_menu_items($menu_object->term_id);
_wp_menu_item_classes_by_context($menu_items);
$menu = array();
$submenus = array();
foreach ($menu_items as $m) {
$m->children = array();
if (!$m->menu_item_parent) {
$menu[$m->id] = $m;
} else {
$submenus[$m->id] = $m;
if (isset($menu[$m->menu_item_parent])) {
$menu[$m->menu_item_parent]->children[$m->id] = &$submenus[$m->id];
} else {
$submenus[$m->menu_item_parent]->children[$m->id] = $submenus[$m->id];
}
}
}
return $menu;
}
# 更多技巧,请关注「专题」