2 votes

Walker_Nav_Menu ne fonctionne pas

Ma fonction wp_nav_manu est ici :

   <?php 
      wp_nav_menu(
                 array(
                            'theme_location' =>'main_nav',

                            'walker' => new customize_primary_menu()
                        )
      ); ?>

la classe des marcheurs est :

<?php 
class customize_primary_menu extends Walker_Nav_Menu
{
    //echo 'sattarNaz'; exit;
    function start_lvl($output, $depth = 0, $arg = array() ){
        echo 'here';exit;
        $indent = str_repeat("\t", $depth);
        //print_r($output); exit;
       $output = "\n$indent<ul class= \"sattar-menu\">\n";

    } 
}

Ici j'ai mis ce code juste pour voir le sattar-menu comme classe de test. Mais lorsque j'inspecte le DOM, aucune classe n'est trouvée. Je revérifie mon code encore et encore. Toute aide sera la bienvenue !

1voto

Lemon Kazi Points 18

Dans votre modèle où vous voulez afficher ce menu, placez ce code.

 if ( has_nav_menu( 'main_nav' ) ) {

         $defaults = array(
            'theme_location'  => 'main_nav',
            //'menu'            => '',
             'container'       => 'ul',
             'container_class' => '',
             'container_id'    => '',
             'menu_class'      => '',
             'menu_id'         => '',
             'walker'          =>  new customize_primary_menu()
        );

        wp_nav_menu( $defaults );

    }

Ensuite, dans votre fonction, vous pouvez essayer ceci

public function start_lvl( &$output, $depth = 0, $args = array() ) {
    $indent = str_repeat("\t", $depth);
    $output .= "\n$indent<ul class=\"sub-menu dropdown-menu\">\n";
  }

Vous devez également créer fonction start_el pour personnaliser le menu. Regardez cette réponse, elle explique comment ajouter du HTML personnalisé aux menus de wordpress : https://stackoverflow.com/a/12251157/1627227

Après avoir mis cela en place, vous devez vous rendre à l'endroit où votre menu (wp_nav_menu()) est appelé. Dans la réponse dont j'ai donné le lien, il y a l'appel complet de la fonction wp_nav_menu. Cependant, vous devrez ajouter cette ligne : 'walker' => new customize_primary_menu au tableau des arguments, pour utiliser votre objet walker personnalisé sur ce menu spécifique.

J'espère que vous avez compris ;)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X