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.

Questo ancora non spiega come rimuovere il div, che piuttosto racchiude il wrap_class spiegato sopra. L'argomento container impostato su false non funziona.

'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>'
)
);
