Elimină div-ul și ul-ul care înconjoară output-ul din wp_nav_menu

5 oct. 2010, 05:50:13
Vizualizări: 52.1K
Voturi: 22

Folosesc noul sistem de meniuri din WordPress, iar aici este rezultatul funcției 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/">Trang nhà</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/">Giới thiệu</a></li>
    </ul>
   </div>

Ceea ce vreau eu este doar acest rezultat:

<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/">Trang nhà</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/">Giới thiệu</a></li>

Fără div-ul sau ul-ul care le înconjoară. Am încercat câteva metode și am căutat pe Google dar fără rezultat :(

0
Toate răspunsurile la întrebare 6
1
34

wp_nav_menu() acceptă un parametru nedocumentat

'items_wrap' => '<ul id="%1$s" class="%2$s">%3$s</ul>'

Aceasta este executată de: $nav_menu .= sprintf( $args->items_wrap, esc_attr( $wrap_id ), esc_attr( $wrap_class ), $items );

poți experimenta cu argumentele funcției sprintf

exemplu: 'items_wrap' => '%3$s' ar elimina tag-ul de înfășurare <ul>

29 mar. 2011 04:59:48
Comentarii

Heh, mișto! Și bine ai venit pe WPSE @woodchucky!

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

Div-ul wrapper este simplu. Când folosești wp_nav_menu(), adaugă acest argument: 'container' => false

Pentru elementul <ul>, există un argument numit 'items_wrap'. Vezi răspunsul lui woodchucky pentru mai multe informații despre acesta (și votează-l!).

5 oct. 2010 06:26:49
Comentarii

Mulțumesc mult, omule! Acum funcționează. Nu eram familiarizat cu PHP și nu știam că trebuie să adaug add_filter în functions.php.

User User
7 oct. 2010 02:11:41

Asta tot nu explică cum să elimini div-ul, care mai degrabă înfășoară wrap_class explicat mai sus. Argumentul container setat la false nu funcționează.

sergio sergio
26 apr. 2011 00:50:34

Dacă argumentul container nu funcționează, înseamnă că nu folosești wp_nav_menu. Probabil rulezi fallback cb, care implicit este wp_page_menu(), prin neindicarea fie a unui meniu, fie a unei locații de meniu cu un meniu atribuit.

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

Pentru a afișa doar elementele li, adăugați acest cod în array-ul wp_nav_menu:

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

'container' => false nu a funcționat pentru mine pentru că am specificat o 'theme_location' și un 'menu' care nu existau. A început să funcționeze imediat ce am corectat această problemă.

Soluție de la: wordpress.org/support

4 iun. 2014 23:32:17
0

Pentru a elimina div-ul care înfășoară meniul:

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

2021

Testat și Funcțional ✔

Pentru a elimina <div>

Folosește container => false sau container => '' în interiorul wp_nav_menu.

wp_nav_menu( 
    array( 
        'container' => false
    ) 
);

Încă nu funcționează?

Nu adăuga theme_location în wp_nav_menu. Dacă o faci, vei vedea în continuare containerul <div>.

wp_nav_menu( 
    array( 
        'container' => false,
        'theme_location' => 'Primary Menu'
    ) 
); 

Pentru a elimina <ul>

Dacă vrei să elimini învelișul <ul>, folosește această soluție. Bazat pe răspunsul lui @Mill.

wp_nav_menu( 
    array( 
        'container' => '',
        'items_wrap' => '%3$s'
    ) 
); 

Dacă ai nevoie de control asupra elementelor <ul>

Dacă vrei să păstrezi toate elementele din interiorul <ul> cu id și class originale din WordPress, folosește 'items_wrap' => '<ul id="%1$s" class="%2$s">%3$s</ul>' bazat pe răspunsul lui @woodchucky.

wp_nav_menu( 
    array( 
        'container' => '',
        'items_wrap' => '<ul id="%1$s" class="%2$s">%3$s</ul>'
    ) 
); 
30 apr. 2021 12:49:28