Je travaille sur un menu de secours pour un thème WordPress sur lequel je travaille. Le menu_class
du menu principal affiche une ul
qui correspond à ce que je veux.
Cependant, si j'utilise le menu de secours, le menu_class
restitue plutôt une div
. Existe-t-il un moyen de faire en sorte que Wordpress génère une ul
pour le menu de secours au lieu d'une div
?
Voici mon code:
function clarity_main_nav_fallback() {
wp_nav_menu(array(
'show_home' => true,
'container' => false, // remove nav container
'container_class' => 'menu clearfix', // class of container (should you choose to use it)
'menu_class' => 'nav navbar-nav' // adding custom nav class
));
}
Premièrement, je pense que vous confondez les arguments wp_nav_menu()
. Le paramètre 'menu_class'
définit la classe ajoutée à l'élément de menu, qui est par défaut <ul>
, conformément au paramètre 'items_wrap'
. Le 'menu_class'
par défaut est 'menu'
, ce qui donne <ul class="menu">
.
Le vrai problème est en réalité le fallback_cb
- le rappel utilisé lorsqu'aucun menu n'est défini - dont la valeur par défaut est wp_page_menu()
.
Désormais, wp_nav_menu()
et wp_page_menu()
affichent une liste non ordonnée (<ul>
) encapsulée par un conteneur (<div>
) par défaut. Dans votre appel à wp_nav_menu()
, vous avez: 'container' => false
, qui remplace la liste de menus encapsulée par un conteneur <div>
. Mais ce paramètre n'est pas transmis à la sortie de rappel wp_page_menu()
par défaut.
La solution la plus simple serait de définir votre propre rappel :
wp_nav_menu( array(
// Add your normal args here
'fallback_cb' => 'wpse116656_nav_menu_cb'
) );
Puis déclarez votre fonction de rappel:
function wpse116656_nav_menu_cb() {
wp_page_menu( array(
// Args here
) );
}
Maintenant, voici la mise en garde:
wp_nav_menu()
applique le paramètre 'menu_class'
à la liste non ordonnée
(<div><ul class="$menu_class"></ul></div>
)
wp_page_menu()
applique le paramètre 'menu_class'
au conteneur wrapper en dehors de la liste du menu.
(<div class="$menu_class"><ul></ul></div>
)
Donc, vous devrez en rendre compte avec votre CSS.