wp_nav_menu überschreiben sich gegenseitig
-
Hallo, ich habe bisher 2 eigene Menüs via wp_nav_menu() in mein Theme gebaut (Hauptnavi und Sekundäre Navi).
Nun will ich eine Footer Navi hinzufügen, doch wenn ich das tue, wird, obwohl der Code logischer Weise im Footer steht, die primäre Navigation im Header ersetzt und im Footer gelöscht.
– Die Hauptnavi ist als primäre navi im Menü Editor geflagged
– Footer und Hauptnavi haben unterschiedliche NamenWeiß irgendwer was da passiert? Bisher scheint es für mich fast ein WordPress Bug zu sein aber ich bezweifle irgendwie, dass es das ist.
-
Kannst du etwas konkreter sagen, wie, d.h. mit welchen Code du wp_nav_menu() verwendest?
Oh, klar, sorry.
in der header.php
$params = array( 'name' => 'main', 'container' => false, 'echo' => true, 'items_wrap' => '<ul class="wrap--960">%3$s</ul>', 'depth' => 0, ); wp_nav_menu($params);$params = array( 'menu' => 'Sprachen', 'container' => false, 'echo' => true, 'items_wrap' => '%3$s', 'depth' => 0, ); wp_nav_menu($params);In footer.php
$params = array( 'menu' => 'Footer', 'container' => false, 'echo' => false, 'items_wrap' => '%3$s', 'depth' => 0, ); echo strip_tags(wp_nav_menu($params), '<a>' );UPDATE
Ich habe festgestellt, dass WordPress meine „menu“ identifier teilweise ignoriert und automatisch alphabetisch sortiert.. Also von A-Z, oben nach unten. Wenn ich die „main“ und „Footer“ navi aber lösche, rückt „Sprachen“ komischer Weise nicht nach, wie es sonst der Footer täte.
Entsprechend kann ich „main“ auch in alles mögliche umbennenen, es wird nicht geändert und bleibt immer die primäre navigation.
Vielleicht hilft das mein Problem zu identifizieren..Kannst du noch dein register_nav_menu() posten?
Ein register_nav_menu() habe ich nicht benutzt, da ich dachte, dass es auch so geht und das nur ein überbleibsel aus älteren Versionen ist? Tut es ja auch, irgendwie.
Der Codex bestärkt mich auch darin. https://codex.wordpress.org/Function_Reference/register_nav_menus
Registers multiple custom navigation menus in the new custom menu editor of WordPress 3.0.
Ich nutze die aktuellste Wp-Version.
UPDATE
Ich habe jetzt die register _nav_menus ergänzt. Definiert waren schon 2 Navis aus twentyfifteen worauf ich aufbaue.
register_nav_menus( array( 'primary' => __( 'Primary Menu', 'twentyfifteen' ), 'social' => __( 'Social Links Menu', 'twentyfifteen' ), 'footer' => __( 'Footer Menu', 'twentyfifteen' ), ) );kann statt ‚twentyfifteen‘ auch mein eigenes template nehmen. Das Problem bleibt das gleiche. Ich habe zwar jetzt im Backend die Menü Auswahl „Footer Menu“ und kann Footer diesem zuordnen, dennoch vertauscht er die Navis, wie oben beschrieben. Wenn das kein bug sein soll …
wp_nav_menu() hat ja eine ganze Reihe von Parametern. Wenn ich es richtig verstehe, kann man mit dem Parameter „menu“ ein bestimmtest Menü auswählen, dass man dann so im Back End erstellen muss. Wenn du also
"menu"=>"Sprachen"wählst, muss das Menü auch „Sprachen“ heißen. Existiert kein Menü mit diesem Namen, fällt wp_nav_menu() auf das erstbeste Menü zurück – ein in der Regel wenig wünschenswerter Effekt.Alternativ bietet sich an, erst einmal ein Navigationsmenü mit register_nav_menu() zu registrieren und diesem dann mit wp_nav_menu() einem bestimmten Position im Template zuzuweisen. Das sieht dann in etwa so aus:
In der functions.php
add_action( 'after_setup_theme', 'register_my_menu' ); function register_my_menu() { register_nav_menu( 'oben', 'oberes Menü' ); }In der header.php kann ich nun dieses Menü verwenden:
wp_nav_menu( array( 'theme_location' => 'oben' ) );Als Ergebnis wird dir in der Registerlasche „Position verwalten“ ein „oberes Menü“ angezeigt, dem du dann ein beliebiges Menü (der Name spielt jetzt keine Rolle mehr) zuweisen kannst.
// Edit
Ok, wenn ich ‚theme_location‘ in beiden Fällen nutze, scheint es die Positionen richtig zuzuordnen (obwohl name bzw. id von ‚menu‘ eigentlich korrekt waren). ‚theme_location‘ scheint zuverlässiger zu arbeiten als ‚menu‘
Das Thema „wp_nav_menu überschreiben sich gegenseitig“ ist für neue Antworten geschlossen.