如何编写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);
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())
);