我使用Extended Walker菜单构建了我的WordPress菜单。 我需要在DIV Wrapped的子菜单的第一级附近。这已经有效了。这是我的代码:
class SH_Child_Only_Walker extends Walker_Nav_Menu {
function start_lvl( &$output, $depth = 0, $args = array() ) {
$indent = str_repeat("\t", $depth);
$output .= "\n$indent<div class=\"submenu\"><ul class=\"sub-menu\">\n";
}
function end_lvl( &$output, $depth = 0, $args = array() ) {
$indent = str_repeat("\t", $depth);
$output .= "$indent</ul>\n<span class=\"subtoggle\"></span></div>\n";
}
但是在这里我得到了这个DIV包裹在每个子菜单周围,也在更深层次。
我需要这样:
第一级:主菜单
第二级:子菜单(带DIV)
第三级:子菜单(不含DIV)
如何使用Extended Walker菜单实现此目的。我不想使用jQuery或任何JavaScript。
由于
答案 0 :(得分:0)
class SH_Child_Only_Walker extends Walker_Nav_Menu {
function start_lvl( &$output, $depth = 0, $args = array() ) {
$indent = str_repeat("\t", $depth);
if($depth == 0){
$output .= "\n$indent<div class=\"submenu\"><ul class=\"sub-menu\">\n";
}else{
$output .= "\n$indent<ul class=\"sub-menu\">\n";
}
}
function end_lvl( &$output, $depth = 0, $args = array() ) {
$indent = str_repeat("\t", $depth);
if($depth == 0){
$output .= "$indent</ul>\n<span class=\"subtoggle\"></span></div>\n";
}else{
$output .= "$indent</ul>\n\n";
}
}
$ depth是您所处的级别,它是零索引,所以它从0开始。如果$ depth 0不是您需要的,只需更改您的数字&#39;重新检查。
我的例子可能不是你需要的确切标记,但希望这说明了如何去做。