Comment fusionner deux menus gérés séparément dans wordpress pour les afficher comme un seul dans le thème frontal ?

Publié par Jean-Michel le

Je travaille sur un thème wp pour un site qui est déjà construit sur wp, et ayant un très grand menu qui est divisé en deux menus dans wp admin.

Je veux fusionner ces deux menus dans le thème en un seul UL. Actuellement, il génère deux menus dans différents conteneurs div et ul li, et brise les styles et js qui y sont appliqués.

Comment puis-je fusionner ces deux menus en un seul ul li dans un seul conteneur?

Solution n°1 trouvée

Le problème est que chaque wp_nav_menu est toujours enveloppé dans des div individuels. Vous devez également désactiver ces div, en ajoutant « ‘container’ => false » à chacun, comme ceci :

<ul id="MyMenu">
  <?php wp_nav_menu( array('menu' => 'FirstMenu', 'items_wrap' => '%3$s', 'container' => false ) ); ?>
  <?php wp_nav_menu( array('menu' => 'SecondMenu', 'items_wrap' => '%3$s', 'container' => false ) ); ?>
</ul>

Solution n°2 trouvée

ok, donc si vous utilisez le wp_nav_menu()

essayez d’utiliser quelque chose comme

<ul id="MyMenu">
  <?php wp_nav_menu( array('menu' => 'FirstMenu', 'items_wrap' => '%3$s' ) ); ?>
  <?php wp_nav_menu( array('menu' => 'SecondMenu', 'items_wrap' => '%3$s' ) ); ?>
</ul>

l’utilisation de items_wrap supprimera l’ul de chaque menu, donc encapsulez le menu dans une balise ul déjà définie, le wp_nav_menu ne crachera que des balises li.

Voir Supprimer le wrap ul : http://codex.wordpress.org/Function_Reference/wp_nav_menu

M

Solution n°3 trouvée

Vous pouvez les combiner avec cette méthode. Il conserve certaines des classes de menu générées par WP.

// two WordPress menus combined into one.
// first menu.
$menu = wp_nav_menu( array(
    'theme_location'=> 'secondary', // or whatever location
    'fallback_cb'   => false,
    'container'     => '',
    'items_wrap' => '%3$s',
    'echo' => false
) );
// include all of the menu items from the first inside the second menu.
wp_nav_menu( array(
    'theme_location' => 'primary', // or whatever location
    'items_wrap' => '<ul id="%1$s" class="%2$s">%3$s ' . $menu . '</ul>',
) );
Catégories : Wordpress

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *