J'ai recherché sur ce site et trouvé de nombreuses réponses à cette question. La plupart d'entre eux ne travaillent pas sur mon thème.
Voici une solution unique que j'ai trouvée et qui fonctionne selon mes besoins.
function wp_nav_menu_no_ul()
{
$options = array(
'echo' => false,
'container' => false,
'theme_location' => 'primary'
);
$menu = wp_nav_menu($options);
echo preg_replace(array(
'#^<ul[^>]*>#',
'#</ul>$#'
), '', $menu);
}
Ce code sera supprimé ul
au début et à la fin de wp_nav_menu()
. Donc dans mon thème j'écris juste
<ul class="primary-nav">
<?php wp_nav_menu_no_ul(); ?>
</ul>
Mais le problème revient quand je n'ajoute ni n'active aucun menu via admin. http://domain.com/wp-admin/nav-menus.php
Question:
Comment supprimer le <div><ul>**</ul></div>
si le menu est actif ou non. Faites le moi savoir
Enfin je l'ai fait fonctionner :) functions.php
function wp_nav_menu_no_ul()
{
$options = array(
'echo' => false,
'container' => false,
'theme_location' => 'primary',
'fallback_cb'=> 'default_page_menu'
);
$menu = wp_nav_menu($options);
echo preg_replace(array(
'#^<ul[^>]*>#',
'#</ul>$#'
), '', $menu);
}
function default_page_menu() {
wp_list_pages('title_li=');
}
header.php
<ul class="primary-nav">
<?php wp_nav_menu_no_ul(); ?>
</ul>
menu_class
et menu_id
ne fonctionnera que si le menu est activé. Si le menu n'existe pas menu_class
et menu_id
n'est pas aussi <ul>
mais que <div>
. c'est pourquoi trop de questions sur wp_nav_menu()
vous peuvent le tester :)
menu_class
etmenu_id
pour définir un attribut de classe et / ou id sur l'UL.