tuananh
  • 0
Новичок

Удалить обертку div и ul из вывода wp_nav_menu

  • 0

Я использую новую систему меню 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, я пробовал несколько способов и гуглил, но безрезультатно 🙁

Share
  1. Обернуть div легко. Когда вы используете wp_nav_menu(), добавьте этот аргумент:'container' => false

    Для <ul> элемента есть аргумент с именем 'items_wrap' . Смотрите ответ сурка для получения дополнительной информации об этом (и проголосуйте за него!).

    • 0
  2. 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> тег упаковки

    • 0
  3. Для вывода только li добавьте это в массив wp_nav_menu:

    'container'      => '',
    'items_wrap'    => '%3$s',
    
    • 0
  4. 'container' => false у меня не получилось, потому что я указывал несуществующий 'theme_location' и 'menu' . Это сработало, как только я это исправил.

    Решение с: wordpress.org/support

    • 0
  5. Чтобы отфильтровать обертку div:

    add_filter('wp_nav_menu_args', 'prefix_nav_menu_args');
    function prefix_nav_menu_args($args = ''){
        $args['container'] = false;
        return $args;
    }
    
    • 0
  6. 2021

    Проверено и работает -”

    Удалять<div>

    Использовать container => false или container => '' внутрь wp_nav_menu .

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

    До сих пор не работает?

    Не добавляйте theme_location в свой wp_nav_menu . Если вы это сделаете, вы все равно увидите <div> контейнер.

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

    Чтобы удалить<ul>

    Если вы хотите удалить <ul> обертку, используйте это. На основе ответа @Mill.

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

    Если вам нужен контроль над <ul> элементами

    Если вы хотите сохранить все элементы внутри <ul> оригинального WordPress id и class использовать это 'items_wrap' => '<ul id="%1$s" class="%2$s">%3$s</ul>' на основе ответа @woodchucky.

    wp_nav_menu( 
        array( 
            'container' => '',
            'items_wrap' => '<ul id="%1$s" class="%2$s">%3$s</ul>'
        ) 
    ); 
    
    • 0

Оставить ответ

You must login to add an answer.