вот функция, проверил, работает, но помоему выводит только максимум 1 подуровень, второй почему то нет
function wp_get_menu_array($current_menu) {
$array_menu = wp_get_nav_menu_items($current_menu);
$menu = array();
$submenu = array();
$subsubmenu = array();
foreach ($array_menu as $m) {
if (empty($m->menu_item_parent)){
$curent_id = $m->ID;
$menu[$m->ID] = array();
$menu[$m->ID]['ID'] = $m->ID;
$menu[$m->ID]['title'] = $m->title;
$menu[$m->ID]['url'] = $m->url;
$menu[$m->ID]['submenu'] = array();
}
if ($m->menu_item_parent == $curent_id) {
$curent_sub_id = $m->ID;
$submenu[$m->ID] = array();
$submenu[$m->ID]['ID'] = $m->ID;
$submenu[$m->ID]['title'] = $m->title;
$submenu[$m->ID]['url'] = $m->url;
$menu[$m->menu_item_parent]['submenu'][$m->ID] = $submenu[$m->ID];
$menu[$m->ID]['subsubmenu'] = array();
}
if ($m->menu_item_parent == $curent_sub_id) {
$subsubmenu[$m->ID] = array();
$subsubmenu[$m->ID]['ID'] = $m->ID;
$subsubmenu[$m->ID]['title'] = $m->title;
$subsubmenu[$m->ID]['url'] = $m->url;
$menu[$m->menu_item_parent]['subsubmenu'][$m->ID] = $subsubmenu[$m->ID];
}
}
return $menu;
}