Wordpress walker正在运行,但不正确

时间:2016-10-25 10:21:53

标签: wordpress wp-nav-walker

去年,我设法通过使用助行器将其他元素添加到我的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,其他只显示他们的子项目。

1 个答案:

答案 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,试试吧。