Видаліть обгортковий div та ul з виводу wp_nav_menu


17

Я використовую нову систему меню Wordpress, і ось результат 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>

Я хочу тільки це:

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

Ні, загортаючи div або ul, я намагався кількома способами і гуляти навколо, але результату немає :(

Відповіді:


28

Обгортання діва легко. Під час використання wp_nav_menu()додайте цей аргумент:'container' => false

Для <ul>елемента є аргумент, який називається 'items_wrap'. Дивіться відповідь Woodchucky для отримання додаткової інформації про це (та оновлення!).


Велике спасибі людино! Це працює зараз. Я не був знайомий з PHP і не знав, що мені потрібно поставити add_filter до function.php.

1
Це все ще не пояснює, як видалити div, який, скоріше, завершує wrap_class, пояснений вище. Аргумент контейнера, встановлений на значення false, не працює.
Серхіо

2
Якщо containerаргумент не працює, це означає, що ви не використовуєте wp_nav_menu. Ви, ймовірно, використовуєте резервний cb, для якого за замовчуванням wp_page_menu()не вказується або меню, або розташування меню з призначеним меню.
Джон П Блох

30

wp_nav_menu() приймає недокументований параметр

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

Це виконується: $nav_menu .= sprintf( $args->items_wrap, esc_attr( $wrap_id ), esc_attr( $wrap_class ), $items );

Ви можете пограти з аргументами sprintf

Наприклад: 'items_wrap' => '% 3 $ s' видалить обгортковий <ul>тег


Хе, круто! І ласкаво просимо до WPSE @woodchucky!
fuxia

5

Для виведення лише li додайте це до масиву wp_nav_menu:

'container'      => '',
'items_wrap'    => '%3$s',

2

'container' => falseне вдалося мені, тому що я вказував неіснуючий 'theme_location'і'menu' . Це спрацювало, як тільки я це виправив.

Рішення від: wordpress.org/support


0

Щоб відфільтрувати обгортковий div:

add_filter('wp_nav_menu_args', 'prefix_nav_menu_args');
function prefix_nav_menu_args($args = ''){
    $args['container'] = false;
    return $args;
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.