Rimuovere il div e ul di wrapping dall'output di wp_nav_menu

5 ott 2010, 05:50:13
Visualizzazioni: 52.1K
Voti: 22

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 :(

0
Tutte le risposte alla domanda 6
1
34

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

29 mar 2011 04:59:48
Commenti

Eh, fantastico! E benvenuto su WPSE @woodchucky!

fuxia fuxia
26 apr 2011 02:18:44
3
30

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!).

5 ott 2010 06:26:49
Commenti

Grazie mille amico! Ora funziona. Non avevo familiarità con PHP e non sapevo che dovevo inserire l'add_filter nel file functions.php.

User User
7 ott 2010 02:11:41

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 sergio
26 apr 2011 00:50:34

Se l'argomento container non funziona, significa che non stai usando wp_nav_menu. Probabilmente stai eseguendo il fallback cb, che di default è wp_page_menu(), perché non hai specificato né un menu, né una posizione del menu con un menu assegnato.

John P Bloch John P Bloch
27 apr 2011 00:03:18
0

Per visualizzare solo gli elementi li aggiungi questo all'array di wp_nav_menu:

'container'      => '',
'items_wrap'    => '%3$s',
8 mag 2015 14:55:16
0

'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

4 giu 2014 23:32:17
0

Per rimuovere il div di wrapping:

add_filter('wp_nav_menu_args', 'prefix_nav_menu_args');
function prefix_nav_menu_args($args = ''){
    $args['container'] = false; // Disabilita il contenitore predefinito
    return $args;
}
26 apr 2011 03:54:52
0

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>'
    ) 
); 
30 apr 2021 12:49:28