我用扩展的 Walker 菜单构建了我的 WordPress 菜单。 我需要环绕 DIV 子菜单的第一级。这已经在工作了。这是我的代码:
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)
如何使用扩展的 Walker 菜单实现此目的。我不想使用 jQuery 或任何 JavaScript。
谢谢
最佳答案
今天遇到这个问题时,我自己也在想这个问题。我倾向于在自己编写代码之前寻找快速解决方案,但在考虑片刻之后,这是一个简单的解决方案。
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 不是你需要的,只需更改你要检查的数字。
我的示例可能不是您需要的确切标记,但希望这说明了如何去做。
关于php - 如何在 WordPress 中将 DIV 包裹在子菜单周围 - 仅在第一级?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38367458/