Pesquisei neste site e encontrei muitas respostas para esta pergunta. A maioria deles não está funcionando no meu tema.
Aqui está uma solução que encontrei e está funcionando de acordo com minha necessidade.
function wp_nav_menu_no_ul()
{
$options = array(
'echo' => false,
'container' => false,
'theme_location' => 'primary'
);
$menu = wp_nav_menu($options);
echo preg_replace(array(
'#^<ul[^>]*>#',
'#</ul>$#'
), '', $menu);
}
Este código será removido ul
no início e no final de wp_nav_menu()
. Então, no meu tema, eu apenas escrevo
<ul class="primary-nav">
<?php wp_nav_menu_no_ul(); ?>
</ul>
Mas o problema está voltando novamente quando eu não adiciono ou ativo nenhum menu via admin. http://domain.com/wp-admin/nav-menus.php
Pergunta:
Como removo <div><ul>**</ul></div>
se o menu está ativo ou não. Avise-se me
Finalmente eu consegui :) functions.php
function wp_nav_menu_no_ul()
{
$options = array(
'echo' => false,
'container' => false,
'theme_location' => 'primary',
'fallback_cb'=> 'default_page_menu'
);
$menu = wp_nav_menu($options);
echo preg_replace(array(
'#^<ul[^>]*>#',
'#</ul>$#'
), '', $menu);
}
function default_page_menu() {
wp_list_pages('title_li=');
}
header.php
<ul class="primary-nav">
<?php wp_nav_menu_no_ul(); ?>
</ul>
menu_class
emenu_id
para definir um atributo de classe e / ou id no UL.menu_class
emenu_id
só funcionará se o menu estiver ativado. Se o menu não existirmenu_class
emenu_id
não for como<ul>
mas<div>
. é por isso que muita dúvida sobrewp_nav_menu()
você pode testá-lo :)Respostas:
A função wp_nav_menu aceita um argumento de fallback_cb, que é o nome da função a ser executada se o menu não existir. então mude seu código para algo assim:
você pode até remover o contêiner do menu e fazer outras coisas com mais alguns argumentos enviados para a função wp_nav_menu
Espero que isto ajude.
fonte
nav-menu-template.php
fallback_cb - If the menu doesn't exists, a callback function will fire. Defaults to 'wp_page_menu'. Set to false for no fallback
O que devo substituir para tornar owp_nav_menu_no_ul()
trabalho se eu definir falso parafallback_cb
? Porque volta em branco por enquanto.ha ha
Na verdade, o WordPress suporta isso por padrão:
O padrão para
items_wrap
é<ul id=\"%1$s\" class=\"%2$s\">%3$s</ul>
.fonte
<ul>
depois que ele já foi adicionado são apenas para trás'container' => false
se você quiser se livrar da embalagem<div>
também.O código abaixo deve ser simples.
Consulte este link para a função wp_nav_menu http://codex.wordpress.org/Function_Reference/wp_nav_menu
fonte
Se você deseja imprimir apenas
<a>
tags, pode seguir este caminho:fonte
Para mim, o que funcionou foi o seguinte:
Espero que ajude.
fonte