去年,我设法通过使用助行器将其他元素添加到我的Wordpress菜单中。 (How can I add parent menu description to my Wordpress menu?)
目前,walker在我的函数文件中看起来像这样:
// Submenu walker to add image
class submenu_walker extends Walker_Nav_Menu {
function start_lvl( &$output, $depth = 0, $args = array() ) {
$indent = str_repeat("\t", $depth);
global $description;
$output .= "<ul class='sub-menu'><li class='menu-image-container'><div class='menu-image'></div><div class='menu-description'>".$description."</div></li>";
}
function end_lvl( &$output, $depth = 0, $args = array() ) {
$indent = str_repeat("\t", $depth);
$output .= "<li><div class='clear'></div></li></ul>";
}
}
基本上,我想要做的是在网站的每个第一级子菜单上添加图像和简短描述:www.bellavou.co.uk
如果您访问此网站,您会发现它看起来不错,因为我已经使用CSS隐藏了我不想要显示的所有其他实例。但是,如果您检查,您将看到为父菜单项中的每个子菜单添加了一个菜单图像容器。
即。在&#39; Face&#39;内,在&#39; Face&#39; Eye&#39; Eye&#39;内有一个菜单项div。和&#39;耳朵&#39;子菜单,以及在主子菜单中显示的子菜单。
我只想要显示主要内容,我认为这是通过更改深度设置来实现的,但我已经尝试过并且没有做任何更改。
如果只在顶级父子菜单中创建一个新的子菜单,我该怎么办?
更新&amp;解决:
事实证明,在规则得到应用的深度方面,我正在考虑正确的思路。但是没有考虑我现有的子菜单。
// Submenu walker to add image
class submenu_walker extends Walker_Nav_Menu {
function start_lvl( &$output, $depth = 0, $args = array() ) {
$indent = str_repeat("\t", $depth);
if(0 == $depth) {
global $description;
$output .= "<ul class='sub-menu'><li class='menu-image-container'><div class='menu-image'></div><div class='menu-description'>".$description."</div></li>";
} else {
$output .= "<ul class='sub-menu'>";
}
}
function end_lvl( &$output, $depth = 0, $args = array() ) {
$indent = str_repeat("\t", $depth);
if(0 == $depth) {
$output .= "<li><div class='clear'></div></li></ul>";
} else {
$output .= "</ul>";
}
}
}
现在已经修复了它,只有在父子菜单的最顶部出现一次的图像div,其他只显示他们的子项目。
答案 0 :(得分:0)
我希望我能正确理解你的问题。如果您希望此图像容器只有一个级别,那么您可以检查if ( $depth == $desired_level)
// Submenu walker to add image
class submenu_walker extends Walker_Nav_Menu {
function start_lvl( &$output, $depth = 0, $args = array() ) {
$indent = str_repeat("\t", $depth);
if ( $depth == 0 ) {
global $description;
$output .= "<ul class='sub-menu'><li class='menu-image-container'><div class='menu-image'></div><div class='menu-description'>".$description."</div></li>";
} else {
$output .= "<ul class='sub-menu'>";
}
}
function end_lvl( &$output, $depth = 0, $args = array() ) {
$indent = str_repeat("\t", $depth);
if ( $depth == 0 ) {
$output .= "<li><div class='clear'></div></li></ul>";
} else {
$output .= "</ul>";
}
}
}
我不确定你的情况下$ depth应该是0还是1,试试吧。