Rimuovere il div e ul di wrapping dall'output di wp_nav_menu
Sto utilizzando il nuovo sistema di menu di WordPress e questo è il risultato di wp_nav_menu()
<div class="menu-main-menu-container">
<ul id="menu-main-menu" class="menu">
<li id="menu-item-28" class="menu-item menu-item-type-post_type current-menu-item page_item page-item-21 current_page_item menu-item-28"><a href="http://www.bemang.com/">Home</a></li>
<li id="menu-item-29" class="menu-item menu-item-type-post_type menu-item-29"><a href="http://www.bemang.com/blog/">Blog</a></li>
<li id="menu-item-30" class="menu-item menu-item-type-post_type menu-item-30"><a href="http://www.bemang.com/gioi-thieu/">Chi siamo</a></li>
</ul>
</div>
Quello che voglio ottenere è solo questo:
<li id="menu-item-28" class="menu-item menu-item-type-post_type current-menu-item page_item page-item-21 current_page_item menu-item-28"><a href="http://www.bemang.com/">Home</a></li>
<li id="menu-item-29" class="menu-item menu-item-type-post_type menu-item-29"><a href="http://www.bemang.com/blog/">Blog</a></li>
<li id="menu-item-30" class="menu-item menu-item-type-post_type menu-item-30"><a href="http://www.bemang.com/gioi-thieu/">Chi siamo</a></li>
Niente div o ul di wrapping, ho provato diversi metodi e cercato su Google ma senza risultati :(
wp_nav_menu() accetta un parametro non documentato
'items_wrap' => '<ul id="%1$s" class="%2$s">%3$s</ul>'
Questo viene eseguito da:
$nav_menu .= sprintf( $args->items_wrap, esc_attr( $wrap_id ), esc_attr( $wrap_class ), $items );
puoi sperimentare con gli argomenti di sprintf
esempio: 'items_wrap' => '%3$s' rimuoverebbe il tag <ul> di wrapping
Il div di contenimento è semplice. Quando usi wp_nav_menu(), aggiungi questo argomento: 'container' => false
Per l'elemento <ul>, c'è un argomento chiamato 'items_wrap'. Vedi la risposta di woodchucky per maggiori informazioni su questo (e votala positivamente!).
Grazie mille amico! Ora funziona. Non avevo familiarità con PHP e non sapevo che dovevo inserire l'add_filter nel file functions.php.
User
Questo ancora non spiega come rimuovere il div, che piuttosto racchiude il wrap_class spiegato sopra. L'argomento container impostato su false non funziona.
sergio
'container' => false non funzionava nel mio caso perché stavo specificando un 'theme_location' e un 'menu' inesistenti. Ha iniziato a funzionare non appena ho corretto questo problema.
Soluzione tratta da: wordpress.org/support
2021
Testato e Funzionante ✔
Per rimuovere il <div>
Usa container => false o container => '' dentro wp_nav_menu.
wp_nav_menu(
array(
'container' => false
)
);
Ancora non funziona?
Non aggiungere theme_location al tuo wp_nav_menu. Se lo fai vedrai ancora il contenitore <div>.
wp_nav_menu(
array(
'container' => false,
'theme_location' => 'Menu Principale'
)
);
Per rimuovere il <ul>
Se vuoi rimuovere il wrapper <ul>, usa questo. Basato sulla risposta di @Mill.
wp_nav_menu(
array(
'container' => '',
'items_wrap' => '%3$s'
)
);
Se hai bisogno di controllare gli elementi <ul>
Se vuoi mantenere tutti gli elementi dentro il <ul> con gli originali id e class di WordPress usa questo 'items_wrap' => '<ul id="%1$s" class="%2$s">%3$s</ul>' basato sulla risposta di @woodchucky.
wp_nav_menu(
array(
'container' => '',
'items_wrap' => '<ul id="%1$s" class="%2$s">%3$s</ul>'
)
);