将参数传递给菜单查看器

时间:2016-05-05 作者:JacobTheDev

有没有办法将参数传递给菜单遍历器?我正在尝试编写一个BEM风格的助行器,我希望能够通过助行器通过一个类应用于菜单链接。类似于:

<?php
wp_nav_menu(array(
    "container"      => false,
    "depth"          => 3,
    "items_wrap"     => "%3\\$s",
    "theme_location" => "primary",
    "walker"         => new BEMwalker("mobile"),
));
?>

1 个回复
最合适的回答,由SO网友:Sven 整理而成

正如@toscho所说,您可以使用参数调用walker类,就像您所做的那样:

new BEMwalker( \'mobile\' )
的构造函数BEMwalker 将获取参数(与PHP中的任何其他函数或方法一样),因此您可以通过$this:

class BEMwalker extends Walker_Nav_Menu {

    private $classes;

    public function __construct( $classes = \'\' ) {
        $this->classes = $classes;
    }

    public function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) {
       $output .= sprintf( "<li class=\\"%s\\"><a href=\\"%s\\">%s</a></li>",
            $this->classes,
            $item->url,
            $item->title
        );
    }

}
进一步阅读:还有一个名为WordPress BEM Menu 这可能会帮助您实现类似于BEM的语法。

相关推荐

WordPress中声明SplitMenuWalker::Walk($Elements,$max_Depth)时出现警告

我开始在WordPress网站上收到以下错误:警告:SplitMenuWalker::walk($elements,$max\\u depth)的声明应与/home/relati67/public\\u html/wp content/themes/mentis/inc/mega menu/split menu中的walk::walk($elements,$max\\u depth,$args)兼容。php第0行我不知道在这里该怎么办。我发现了一个具有类似内容的线程,但错误指向特定行(不是第0行),并且不