wp_nav_menu sempre volta a um menu

Olá a todos,
Estou escrevendo uma function automática que gera um menu de uma function. ele chama wp_nav_menu em cada item de uma matriz, porque eu quero que isso seja dynamic. o problema é, não importa como eu configurou, se o menu não existir, wp_nav_menu está gerando um menu, por exemplo, o ‘padrão’. Aqui está o meu código (os itens são apenas um conjunto de strings):

for($i=0;$i $themenu, 'menu_class' => 'mymenu', 'container' => 'false', 'fallback_cb' => 'false', 'echo' => false ) ); echo $themenu; } 

Eu sei que está funcionando parcialmente, porque se existe $ themenu, ele mostra o correto. mas, se isso não acontecer, apenas mostrará qualquer menu! não apenas irritante, mas também quebra ativamente a experiência do usuário.

Solutions Collecting From Web of "wp_nav_menu sempre volta a um menu"

wp_nav_menu() realmente tenta muito lhe fornecer um menu, e fallback_cb só é executado quando nada mais funciona. Do código :

  • Se o menu for fornecido e se refere a um menu existente (procurado por wp_get_nav_menu_object() , que aceita um id, slug ou nome), este será o menu
  • Caso contrário, se a localização do theme_location estiver configurada para uma localização de menu registrada, isso será passado para wp_get_nav_menu_object()
  • Caso contrário, o WordPress procurará o primeiro menu existente que possui itens e use esse
  • Caso contrário, chamado fallback_cb , que por padrão é wp_page_menu , que é um menu de todas as páginas

Então, se você quiser apenas usar o argumento do menu , você deve testar você mesmo chamando wp_get_nav_menu_object() . Somente se isso retornar algo que você deveria chamar wp_nav_menu() .

Tente empacotar seu eco dentro de um condicionamento has_nav_menu() :

 for($i=0;$i $themenu, 'menu_class' => 'mymenu', 'container' => 'false', 'fallback_cb' => 'false', 'echo' => false ) ); if ( has_nav_menu( $themenu ) ) echo $themenu; } 

(Se eu estiver seguindo seu código corretamente …)

Da input do Codex para wp_nav_menu () :

$ fallback_cb (string) (opcional) Se o menu não existir, a function de retorno para usar. Definir como falso para nenhum retorno. Padrão: wp_page_menu

Então, você tentou passar 'fallback_cb' => false ?

EDITAR:

De acordo com o comentário abaixo, 'fallback_cb' => 'false' está dizendo wp_nav_menu() para wp_nav_menu() a uma function chamada false() , e uma vez que essa function não existe, ela retorna ao seu retorno normal, wp_page_menu() . Então, use 'fallback_cb' => false (ou seja, um valor booleano , em vez de um valor de string ).