如何为子菜单构造子菜单的自定义html

时间:2014-10-27 作者:Zammuuz

如何编写walker类来构造新的子菜单。对于我的wordpress主题,子菜单如下所示:

<li class="drop">
                <a data-scroll-nav=\'2\'>Home</a>
</li>
    <li class="drop">
                <a data-scroll-nav=\'2\'>About Us</a>
                <div class="dropdownContain">
                        <div class="dropOut">
                            <div class="triangle"></div>
                            <ul>
                                <li>Plan</li>
                                <li>Account Settings</li>
                                <li>Switch Account</li>
                                <li>Sign Out</li>
                            </ul>
                        </div>
                    </div>
      </li>
<li class="drop">
                <a data-scroll-nav=\'2\'>Contact</a>
</li>
在上面的菜单结构是主菜单->hom,关于我们,请联系。“关于我们”菜单有4个子菜单-计划、帐户设置、切换帐户、注销。

我没有使用wp_nav_menu() 在头文件中。只需使用侧栏并通过小部件添加菜单。

我的菜单在wordpress中正常工作。现在我需要像上面一样开发子菜单。谁能告诉我怎么写walker class 对于此子菜单?

到目前为止,我尝试了这个函数,但没有成功。

function mmy_walker_nav_menu_start_el(&$output, $depth = 0, $args = array()) {

        $indent = str_repeat("\\t", $depth);
        $output .= "\\n$indent<div class=\\"dropdownContain\\"><div class=\\"dropOut\\"><div class=\\"triangle\\"></div><ul class=\\"sub-menu\\">\\n";

        $indent = str_repeat("\\t", $depth);
        $output .= "$indent</ul></div></div>\\n";

    return $output;
}
add_filter(\'walker_nav_menu_start_el\', \'mmy_walker_nav_menu_start_el\', 10, 4);

1 个回复
SO网友:Zammuuz

好的。。我用自己的方式解决了这个问题。我在函数中添加了以下函数。php文件

class ik_walker extends Walker_Nav_Menu{        
    //start of the sub menu wrap
    function start_lvl(&$output, $depth) {
        $output .= \'<div class="dropdownContain">
                        <div class="dropOut">
                            <div class="triangle"></div>
                                <ul>\';
    }

    //end of the sub menu wrap
    function end_lvl(&$output, $depth) {
        $output .= \'
                    </ul>
                </div>

        </div>\';
    }


}
和在标题中。php文件菜单部分添加了此wp\\U nav\\U菜单

wp_nav_menu( array(
    \'container\' => false, 
    \'menu_id\' => \'nav\', 
    \'depth\' => 0,
    \'theme_location\' => \'primary\', 

    \'walker\' => new ik_walker())
);

结束

相关推荐

Walker导航从某一深度移除子菜单UL

我想删除sub-menu ul和.menu-item-has-children 当菜单深度优于或等于2时初始化。所以,我只想要一个最多有3个子菜单的菜单。其他子项仍将显示在菜单中,但不会显示在子菜单中。使用wp\\U nav\\U菜单(“深度”=>3),它不会附加所有项目。所以,我想我需要使用一个定制的walker导航。我不知道该怎么做start_lvl. 如何计算深度并删除ul和类。。。我的目标是更改此菜单:菜单项具有子菜单项1菜单项2菜单项具有子菜单项3菜单项4菜单项具有子菜单项5菜单项6:菜单