メニューウォーカーにパラメータを渡す方法はありますか? BEMスタイルのウォーカーを作成しようとしていますが、ウォーカーを介してメニューリンクに適用するクラスを渡したいと思います。何かのようなもの:
<?php
wp_nav_menu(array(
"container" => false,
"depth" => 3,
"items_wrap" => "%3\$s",
"theme_location" => "primary",
"walker" => new BEMwalker("mobile"),
));
?>
@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 と呼ばれるGitHubリポジトリもあります。これはBEMのような構文を実装するのに役立つかもしれません。