Est-il possible de passer un paramètre à un menu Walker? J'essaie d'écrire un marcheur de style BEM et j'aimerais pouvoir réussir un cours à appliquer aux liens de menu via le marcheur. Quelque chose comme:
<?php
wp_nav_menu(array(
"container" => false,
"depth" => 3,
"items_wrap" => "%3\$s",
"theme_location" => "primary",
"walker" => new BEMwalker("mobile"),
));
?>
Comme @toscho l'a dit, vous pouvez appeler la classe de marcheur avec des paramètres comme vous l'avez fait:
new BEMwalker( 'mobile' )
Le constructeur de BEMwalker
prendra les arguments (comme toute autre fonction ou méthode en PHP) afin que vous puissiez accéder au (x) paramètre (s) via $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
);
}
}
Lectures supplémentaires: Il existe également un référentiel GitHub appelé WordPress BEM Menu qui pourrait vous aider à implémenter une syntaxe de type BEM.