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.
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 :
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 theme_location
auf einen registrierten theme_location
ist, wird dies wp_get_nav_menu_object()
an wp_get_nav_menu_object()
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 ).