Walker导航从某一深度移除子菜单UL

时间:2013-12-22 作者:freaky

我想删除sub-menu ul和.menu-item-has-children 当菜单深度优于或等于2时初始化。

所以,我只想要一个最多有3个子菜单的菜单。其他子项仍将显示在菜单中,但不会显示在子菜单中。

使用wp\\U nav\\U菜单(“深度”=>3),它不会附加所有项目。所以,我想我需要使用一个定制的walker导航。

我不知道该怎么做start_lvl. 如何计算深度并删除ul和类。。。

我的目标是更改此菜单:

菜单项具有子菜单项1菜单项2菜单项具有子菜单项3菜单项4菜单项具有子菜单项5菜单项6:

菜单项有子菜单项1菜单项2菜单项有子菜单项3菜单项4菜单项有子菜单项5菜单项6以及wordpress

菜单项有子菜单项1菜单项2菜单项有子菜单项3菜单项4菜单项有子菜单项我试过:

function start_lvl(&$output, $depth) { 
    if($depth >= 2) {
        $output .=  \'\';
    } else {
        $output .= "<ul class=\'sub-menu\'>";
    }
}
它几乎可以工作,但它在我的导航菜单中产生了ul问题。

1 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

乍一看,在不进行任何测试的情况下,您得到的代码应该可以正常工作,但我预计您会有一些错误</ul> 在标记中。您需要为end_lvl 方法

function end_lvl(&$output, $depth) { 
    if($depth >= 2) {
        $output .=  \'\';
    } else {
        $output .= "</ul>";
    }
}
我不知道你的超大菜单是否有问题。

结束