Elimină div-ul și ul-ul care înconjoară output-ul din wp_nav_menu
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 :(

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>

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

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

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ă.

'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

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