Walker nav удаляет подменю ul с определенной глубины

Я хочу удалить sub-menu ul и .menu-item-has-children когда глубина меню выше или равна 2.

Итак, я хочу только меню с 3 подменю максимум. Остальные дети будут отображаться в меню, но не в подменю.

С wp_nav_menu ('depth' => 3) он не добавляет все элементы. Итак, я думаю, мне нужно использовать пользовательский навигатор Walker.

Я не знаю, как это сделать с помощью start_lvl . Каков способ подсчета глубины и удаления ul и классов …

Моя цель – изменить это меню:

  • пункта меню, есть-дети
    • пункта меню-1
    • пункта меню-2
    • пункта меню, есть-дети
      • пункта меню-3
      • пункта меню-4
      • пункта меню, есть-дети
        • пункта меню-5
        • пункта меню-6

в это меню:

  • пункта меню, есть-дети
    • пункта меню-1
    • пункта меню-2
    • пункта меню, есть-дети
      • пункта меню-3
      • пункта меню-4
      • пункта меню, есть-дети
      • пункта меню-5
      • пункта меню-6

И нежелательное поведение обеспечивается параметром wp_nav_menu ('depth' => 3) в wordpress

  • пункта меню, есть-дети
    • пункта меню-1
    • пункта меню-2
    • пункта меню, есть-дети
      • пункта меню-3
      • пункта меню-4
      • пункта меню, есть-дети

Я пробовал с этим:

 function start_lvl(&$output, $depth) { if($depth >= 2) { $output .= ''; } else { $output .= "<ul class='sub-menu'>"; } } 

Он работает рядом, но создает проблему с ul внутри моего navmenu.

На первый взгляд, и ничего не тестируя, код, который у вас есть, должен работать, но я ожидаю, что у вас есть несколько ложных </ul> в вашей разметке. Вам нужно сделать почти то же самое для метода end_lvl .

 function end_lvl(&$output, $depth) { if($depth >= 2) { $output .= ''; } else { $output .= "</ul>"; } } 

Я не знаю, если это проблема с вашим мегаменю или нет.