我有一个自定义的两级菜单在WordPress中。有一个上层,当你悬停在项目,出现了一个子菜单。2子菜单中的两个菜单项有一个按钮,而其他子菜单中没有。3这两个段落有一个“browseall”类。4我需要在步行者_Nav_Menu中检查这个类,并向子菜单添加一个自定义按钮。5我如何检查“browseall”类?6在我的代码中,我'我正在为ul.sub-menu创建一个 Package 器。我需要检查元素中是否有一个“browseall”类,以便在这个 Package 器中添加一个按钮。这样的按钮只会出现在有“browseall”类的项目中。
class My_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='sub-menu__depth-1'><ul class='sub-menu sub-menu__main'>\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> <
/div>\n";
} else {
$output. = "$indent</ul>\n";
}
}
}
下面是一个应该如何的例子:
class My_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='sub-menu__depth-1'><ul class='sub-menu sub-menu__main'>\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) {
//here, a button appears outside the sub-menu if the navigation element has the class "browse all"
$output .= "$indent</ul>
<a>Browse All</a>
</div>\n";
} else {
$output .= "$indent</ul>\n";
}
}
}
1条答案
按热度按时间kgsdhlau1#
我不认为您可以直接在
start_lvl
或end_level
中执行此操作-因为它们只创建 Package UL。但它们没有您要查找的类,这些类位于实际的导航项中,并且在start_el
和end_el
中处理/呈现。但是我想你可以给这个类添加一个属性,一个数组--在这个数组中你可以保存信息,不管特定深度的当前(子)菜单是否需要添加这些额外的元素。