准备开始WordPress导航循环

时间:2015-09-15 作者:Alex

我正在尝试在<ul> 使用自定义Walker标记WordPress菜单,扩展Walker_Nav_Menu, 但是,我无法在网站前端显示任何自定义标记。

我没有收到任何错误,只是在使用wp_nav_menu 使用walker 参数。下面是我用来构建自定义Walker的代码和调用它的代码:

class BP_Walker_Nav_Menu extends Walker_Nav_Menu {
    function start_lvl(&$output, $depth = 0, $args = array()) {
        $output .= \'<input type="checkbox" id="responsive-nav-toggle" />

                    <label class="c-nav__collapsible-label" for="responsive-nav-toggle">
                        Explore this section... <i class="c-icon c-icon-down-open"></i>
                    </label>\';
    }
}
以及wp_nav_menu() 电话:

$args = array(
    \'container\' => \'nav\',
    \'container_class\' => \'c-nav c-nav--vertical c-nav--collapsible\',
    \'menu_class\' => \'c-nav__collapser\',
    \'theme_location\' => \'secondary\',
    \'walker\' => new BP_Walker_Nav_Menu()
);

wp_nav_menu($args);
有人能帮忙吗?谢谢

1 个回复
SO网友:deadlyhifi

在这种情况下,您可以使用items_wrap 的参数wp_nav_menu.

$args = array(
    \'container\' => \'nav\',
    \'container_class\' => \'c-nav c-nav--vertical c-nav--collapsible\',
    \'menu_class\' => \'c-nav__collapser\',
    \'theme_location\' => \'secondary\',
    \'items_wrap\' => menu_wrapper()
);

wp_nav_menu($args);
在被调用的函数中,可以使用arguments 对于%1$s (id),%2$s (类别),以及%3$s (所有列表项)。

function menu_wrapper() {
    $wrap = \'<input type="checkbox" id="responsive-nav-toggle" />\'
    . \'<label class="c-nav__collapsible-label" for="responsive-nav-toggle">\'
    . \'Explore this section… <i class="c-icon c-icon-down-open"></i>\'
    . \'</label>\'
    . \'<ul id="%1$s" class="%2$s">\'
    . \'%3$s\'
    . \'</ul>\';

    return $wrap;
}

相关推荐

Add extra markup to WP menus

我被要求将一个HTML网站重新开发为一个WP主题,它有一个非常高级的菜单结构,我不太确定如何复制它。第二个菜单项有一个子菜单,但它不仅仅是“li”中的“ul”,还有额外的div等。。因为下拉列表有3列布局,其中2列包含子链接,第3列包含内容。这是一个示例:<ul class=\"nav navbar-nav three\"> <li class=\"dropdown yamm-fw\"> <a href=\"#\" class=\"dropdown-toggl