Remover div de empacotamento e ul da saída de wp_nav_menu

16

Estou usando o novo sistema de menus do Wordpress, e aqui está o resultado de 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>

O que eu quero é apenas isso:

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

Não, envolvendo div ou ul, tenho tentado algumas maneiras e pesquisado no google, mas sem resultado :(

fuxia
fonte

Respostas:

27

A div de empacotamento é fácil. Quando você usa wp_nav_menu(), adicione este argumento:'container' => false

Para o <ul>elemento, há um argumento chamado 'items_wrap'. Veja a resposta de woodchucky para obter mais informações sobre essa (e faça uma votação!).

John P Bloch
fonte
Valeu mesmo, cara! Agora está funcionando. Eu não conhecia o PHP e não sabia que precisava colocar o add_filter no functions.php.
11
Isso ainda não explica como remover a div, que envolve a wrap_class explicada acima. O argumento do contêiner definido como false não funciona.
sergio
2
Se o containerargumento não funcionar, isso significa que você não está usando wp_nav_menu. Você provavelmente está executando o fallback cb, que é o padrão ao wp_page_menu()não especificar um menu ou um local de menu com um menu atribuído.
John P Bloch
5

Para emitir apenas li's, adicione-o ao array wp_nav_menu:

'container'      => '',
'items_wrap'    => '%3$s',
Moinho
fonte
2

'container' => falseestava falhando para mim, porque eu estava especificando um não existente 'theme_location'e 'menu'. Funcionou assim que eu consertei isso.

Solução de: wordpress.org/support

Mirko
fonte
0

Para filtrar a div de quebra automática:

add_filter('wp_nav_menu_args', 'prefix_nav_menu_args');
function prefix_nav_menu_args($args = ''){
    $args['container'] = false;
    return $args;
}
Chris_O
fonte