web-dev-qa-db-fra.com

wp_nav_menu ajoute un élément au conteneur

J'ai essayé de raccrocher wp_nav_menu_args pour obtenir un identifiant pour le menu de navigation. J'ai essayé d'ajouter un élément en utilisant javascript dans le menu conteneur. Mais je ne reçois jamais l'ID pour le menu.

Comment puis-je ajouter un élément à un conteneur de menu de navigation à partir de:

<nav id="my-menu"><ul><li>.....<li></ul></nav>

à:

<nav id="my-menu"><div class="additional"></div><ul><li>.....<li></ul></nav>
1
user1841035

Ceci est assez simple, en supposant que vous avez accès aux fichiers php.

Dans le modèle qui génère le menu, modifiez le wp_nav_menu call pour spécifier container = FALSE et fournissez le conteneur et le div supplémentaire manuellement dans le code HTML environnant.

Sans connaître votre code à l'avance, une méthode serait de le modifier comme suit:

<nav id="my-menu"><div class="additional"></div>
    <?php 
        // Replicate the args from the original code for the most part
        $args = array(
            'theme_location' => 'primary', // Or whatever the original was
            'container'      => FALSE, // This tells it to not put a container around it
            'echo'           => TRUE, // again, whatever original was
            // .. any other args from original code ...
        );
        wp_nav_menu($args);
    ?>
</nav>

EDIT:Sachant que le menu doit être modifié à la génération, la réponse change un peu:

Vous devez créer un menu walker personnalisé

Fondamentaux ci-dessous. Modifiez en fonction de vos besoins, consultez l’article de Walker ci-dessus:

class Custom_Walker_Nav_Menu extends Walker_Nav_Menu {
  function start_el ( &$output, $item, $depth = 0, $args = array(), $id = 0 )     {
    // Copy all the start_el code from source, and modify
  }

  function end_el( &$output, $item, $depth = 0, $args = array() ) {
    // Copy all the end_el code from source, and modify
  }
}

Ensuite, dans vos fichiers de thème, vous pouvez appeler wp_nav_menu comme ceci:

wp_nav_menu(array(
  'theme_location' => 'main',
  'container' => false,
  'menu_id' => 'nav',
  'depth' => 1,
  // This one is the important part:
  'walker' => new Custom_Walker_Nav_Menu
));
3
cale_b