Pasa un parámetro a un caminante de menú

4

¿Hay alguna forma de pasar un parámetro a un caminante de menú? Estoy intentando escribir un andador de estilo BEM, y me gustaría poder pasar una clase para aplicar a los enlaces del menú a través del andador. Algo como:

<?php
wp_nav_menu(array(
    "container"      => false,
    "depth"          => 3,
    "items_wrap"     => "%3\$s",
    "theme_location" => "primary",
    "walker"         => new BEMwalker("mobile"),
));
?>
    
pregunta JacobTheDev 05.05.2016 - 23:56

1 respuesta

5

Como dijo @toscho, puede llamar a la clase walker con parámetros como lo hizo:

new BEMwalker( 'mobile' )

El constructor de BEMwalker tomará los argumentos (como cualquier otra función o método en PHP) para que pueda acceder a los parámetros a través de $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
        );
    }

}

Más información: También hay un repositorio de GitHub llamado Menú de WordPress BEM que podría ayudarlo a implementar un BEM como la sintaxis.

    
respondido por el Sven 06.05.2016 - 15:26

Lea otras preguntas en las etiquetas