wp_nav_menu greift immer auf ein Menü zurück

Hey alle zusammen,
Ich schreibe eine automatisierte function, die ein Menü aus einer function generiert. Es ruft wp_nav_menu für jedes Element eines Arrays auf, weil ich möchte, dass es dynamisch ist. das problem ist, egal wie ich es einstelle, wenn das menü nicht existiert, erzeugt wp_nav_menu ein menü, zB den “default”. Hier ist mein Code (Elemente sind nur eine Menge von Strings):

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

Ich weiß, dass es teilweise funktioniert, denn wenn $ das Menü existiert, zeigt es das richtige an. aber wenn nicht, zeigt es nur irgendein Menü! nicht nur nervig, sondern bricht auch aktiv die Benutzererfahrung.

Solutions Collecting From Web of "wp_nav_menu greift immer auf ein Menü zurück"

wp_nav_menu() versucht tatsächlich, Ihnen ein Menü zur Verfügung zu stellen, und fallback_cb wird nur ausgeführt, wenn nichts anderes funktioniert. Aus dem Code :

  • Wenn ein menu bereitgestellt wird und auf ein vorhandenes Menü verweist (das über wp_get_nav_menu_object() , das eine ID, einen Slug oder einen Namen akzeptiert), wird dies das Menü sein
  • Wenn theme_location auf einen registrierten theme_location ist, wird dies wp_get_nav_menu_object() an wp_get_nav_menu_object()
  • Andernfalls sucht WordPress nach dem ersten vorhandenen Menü, das Elemente enthält und verwendet
  • Andernfalls wird fallback_cb aufgerufen. wp_page_menu ist standardmäßig wp_page_menu , ein Menü aller Seiten

Wenn Sie also nur das wp_get_nav_menu_object() möchten, sollten Sie dies selbst testen, indem Sie wp_get_nav_menu_object() aufrufen. Nur wenn dies etwas zurückgibt, sollten Sie wp_nav_menu() aufrufen.

Versuchen Sie, Ihr Echo in eine has_nav_menu() Bedingung 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; } 

(Wenn ich deinen Code richtig befolge …)

Aus dem Codex-Eintrag für wp_nav_menu () :

$ fallback_cb (string) (optional) Wenn das Menü nicht existiert, wird die Fallback-function verwendet. Für keinen Fallback auf False setzen. Standard: wp_page_menu

Haben Sie versucht, 'fallback_cb' => false ?

BEARBEITEN:

wp_nav_menu() dem Kommentar unten sagt 'fallback_cb' => 'false' wp_nav_menu() , auf eine function mit dem Namen false() , und da diese function nicht existiert, fällt sie auf ihr normales Fallback wp_page_menu() . Verwenden Sie daher 'fallback_cb' => false (dh ein boolescher Wert anstelle eines Zeichenfolgenwerts ).