Menüs in Custom Theme werden nicht angezeigt

  • Hallo zusammen,


    ich entwickle gerade eine neue Seite und hänge seit einigen Tagen an einem Problem, das Ihr hier vermutlich schon hundertfach gelesen und beantwortet habt. Jedenfalls konnte ich bei der Suche mittels Google schon massenweise ähnliche Fälle finden, allerdings habe ich dort keine einzige Lösung gefunden, die mir weiter hilft. Es geht darum, ein zweites (eigenes) Menü in einem Custom Theme zu erstellen und einzubinden.


    Meine aktuelle Entwicklung sieht wie folgt aus:


    Registrieren der Menüs in functions.php


    Einbinden der Menüs in header.php

    An dieser Stelle wird bereits in beiden Bereichen jeweils das Hauptmenü "NavigationMenu", also das Standard-WP-Menü angezeigt. Wenn ich jetzt aber im wp-admin eines der Menüs z.B. der theme_location 'primary' zuordne, dann ist an dieser Stelle kein Menü mehr zu sehen. Genauso auch mit der zweiten theme_location und dem zweitem Menü; Siehe Screenshot:

    Also anders gesagt: Sobald ich ein Menü einer Location zuordne, ist die Location leer.

    Ich habe zusätzlich versucht, ein Menü in einem Widget anzuzeigen. Das Ergebnis ist, dass der Titel des Widgets angezeigt wird, das Menü darin produziert aber ebenfalls keinen Output.

    Woran kann es denn noch liegen, dass keines meiner Menüs angezeigt wird? Ich bin langsam am verzweifeln und bin dankbar für jeden Hinweis.

    Beste Grüße,
    Toni

    Webseite: goo.gl/ndDatM

    Einmal editiert, zuletzt von toneytp (30. November 2015 um 15:17)

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • In dem Code, den du in deine functions.php gepackt hast, ist auf alle Fälle mal ein Komma zu viel: das letzte Zeichen (Komma) in der 7. Zeile (also die Zeile mit dem „Shop-Menü“) muss weg.

    Gruß
    helix

  • Habe gerade im WordPress-Codex gesehen, dass die das Beispiel selber mit abschließendem Komma bringen.
    Ich war nur drauf gekommen, weil es bei mir schon öfter an solchen Winzigkeiten gelegen hatte …

    Nächster Schritt: Lass mal die Angaben 'custom_theme' weg. Also so:

    Diese Angabe bezieht sich, soweit ich das verstehe (besser Wissende bitte gerne korrigieren!) auf eine theme_textdomain, die vorher eingebunden sein muss – hast du? Diese Textdomain brauchst du nur, wenn dein Theme übersetzbar sein soll …

    Und in deinem html ist mir noch aufgefallen, dass du die erste Navigation in eine ul-Liste packst. Absicht? Weil, WordPress wird die Navigation selber auch in einer ul-Liste ausgeben, du hast dann eine verschachtelte Liste. (Und es könnte im Falle des ersten eigenen Navigationsmenüs auch ein CSS-Problem sein, dass so tief verschachtelt über CSS ausgeblendet wird.)

    Nimm mal die Webmasterkonsole oder Firebug an die Hand und untersuche, was WordPress ausgibt.
    Dass das WordPress-Standard-Menü nicht mehr ausgegeben wird, sobald du dein eigenes mit der entsprechenden Position im Theme verknüpfst, ist normal, das ist das Fallback innerhalb wp_nav_menu();

    Gruß
    helix

  • helix: Wenn eine textdomain nicht existiert, ist es egal ob die Angabe drin steht oder nicht. Ganz korrekt müsste man dann auch __() weg lassen.

    toneytp
    du schreibst von einem Child Theme. Vermutlich gibt es im Parent doch schon ein 'primary' Menü, also einfach das mal weg lassen und nur ein neues registrieren:

    PHP
    if ( ! function_exists( 'own_custom_theme_setup' ) ) {
      function own_custom_theme_setup() {
    	register_nav_menus( array(
    		'ShopMenu' => 'shop-menu',
    	); );
      }
      add_action( 'init', 'own_custom_theme_setup' );
    }


    bzw. reicht dann auch nur register_nav_menu(), ist aber praktisch egal:

    PHP
    if ( ! function_exists( 'own_custom_theme_setup' ) ) {
      function own_custom_theme_setup() {
    	register_nav_menu('ShopMenu', 'shop-menu');
      }
      add_action( 'after_setup_theme', 'own_custom_theme_setup' );
    }

    Den Menü-Slug hab ich extra mal geändert, kA ob du den Slug Shop nicht schon wo anders verwendest.

    PHP
    wp_nav_menu( array( 
    	'theme_location'  => 'shop-menu',
    	'menu'            => 'shop-menu',
     ) );

    [size=10]Bitte immer zuerst die Forensuche nutzen und erst danach Deine Fragen hier im Forum stellen, denn sehr vieles wurde schon mehrfach beantwortet. Bitte dabei auch die Forenregeln beachten.
    Kein Support per PN - Fragen gehören ins Forum.[/SIZE]
    [size=8]Wenn du eine weise Antwort verlangst, musst du vernünftig fragen. (Johann Wolfgang von Goethe)[/SIZE]

  • Hi,

    folgende 3 Varianten habe ich jetzt nochmals durchgetestet:
    [COLOR=#808080]

    PHP
    register_nav_menus( array(    'primary' => 'PrimaryMenu',    'navigation' => 'NavigationMenu',    'shop' => 'ShopMenu') );

    [/COLOR][COLOR=#808080]

    PHP
    register_nav_menus( array(    'primary' => __( 'PrimaryMenu' ),    'navigation' => __( 'NavigationMenu' ),    'shop'  => __( 'ShopMenu' )) );

    [/COLOR][COLOR=#808080]

    PHP
    register_nav_menus( array(    'primary' => __( 'PrimaryMenu', 'custom_theme' ),    'navigation' => __( 'NavigationMenu', 'custom_theme' ),    'shop'  => __( 'ShopMenu', 'custom_theme' )) );


    [/COLOR]
    Die theme_textdomain verwende ich, habe sie aber gerade testweise auch mal auskommentiert. -> keine Änderung.

    Die Verschachtelung der ul-Liste ist Absicht; Die Suche soll ein weiteres Erweiterung der Navigations-ul sein.

    Firebug benutze ich ohnehin, bringt mich aber in dieser Richtung nicht weiter. Das Menü erzeugt einfach keine Ausgabe:

    HTML
    <li id="navigation">
         <div id="nav navbar-nav" class="nav navbar-nav"><!-- hier sollte das Menü stehen --></div>                                
    </li>

    maxe: Wie kommst Du darauf, dass es sich um ein Child-Theme handelt? Ich habe mir dieses Theme selbst erstellt, ganz normal, nicht als Child. Die bestehende Registrierung des 'primary' habe ich erweitert um meine zusätzlichen Menüs.

    P.S.: Ich bin Wordpress-Anfänger, kann also durchaus sein, dass ich bei der Erstellung des Themes Fehler gemacht habe. :)

  • Das Menü erzeugt einfach keine Ausgabe:

    HTML
    <li id="navigation">
         <div id="nav navbar-nav" class="nav navbar-nav"><!-- hier sollte das Menü stehen --></div>                                
    </li>

    Hier fehlt ja jetzt auch der Aufruf fürs Menü mit wp_nav_menu, wie von Maxe gepostet. (Vorhin war es in deinem html mit drin – und was steht in der Datei, die auf deinem Server liegt?)

    P.S.: Ich bin Wordpress-Anfänger, kann also durchaus sein, dass ich bei der Erstellung des Themes Fehler gemacht habe. :)

    Das ist ja nicht schlimm.
    Nur, wie sollen wir jetzt so global und pauschal drauf kommen, was du für einen Fehler gemacht hast?

    Debugging-Modus, nehme ich an, hast du eingeschaltet?

    Dann kannst du jetzt entweder zurück auf Los gehen und deine Menüs mal ohne jeglichen Schnick oder Schnack versuchen in einem jungfräulichen div einzubinden.
    Oder du postest hier komplett deine functions.php und die Datei (header.php?), in der deine Menüs ausgegeben werden sollen.

    Gruß
    helix

  • In welchen Hook hast du denn jetzt die Menüs registriert, init oder after_setup_theme?
    Und hast du es mal mit 3 einzelnen register_nav_menu() und nicht gesammelt in register_nav_menus() getestet?

    PS: mit dem Child-Theme muss ich gedanklich noch in einem anderen Thread hier gewesen sein :oops:

    [size=10]Bitte immer zuerst die Forensuche nutzen und erst danach Deine Fragen hier im Forum stellen, denn sehr vieles wurde schon mehrfach beantwortet. Bitte dabei auch die Forenregeln beachten.
    Kein Support per PN - Fragen gehören ins Forum.[/SIZE]
    [size=8]Wenn du eine weise Antwort verlangst, musst du vernünftig fragen. (Johann Wolfgang von Goethe)[/SIZE]

  • Späte Antwort, aber ein Erfolg ist zu vermelden: Seit dem Update auf Wordpress 4.4 funktionieren die Menüs plötzlich, ohne, dass ich noch irgendetwas daran geändert hätte. Ich hatte zwischendurch die Menüs statisch gemacht, also in der header.php bzw. footer.php fest definiert. Ich wollte mich jetzt nochmal damit beschäftigen und nun funktioniert alles.

    Könnte da eventuell ein Bug gefixt worden sein, unter dem ich zufällig leiden musste?

    Und noch die Antwort auf die letzten beiden Posts:
    helix: Der HTML-Code meines letzten Posts war die Ausgabe im Browser, und nicht das PHP. Ich habe den Aufruf [COLOR=#333333]wp_nav_menu natürlich nicht vergessen! :)
    maxe: Ich hatte alle möglichen Varianten probiert. Registrierung in init und after_setup_theme, und sowohl einzelner Aufruf register_nav_menu() als auch gleichzeitiger Aufruf register_nav_menus().

    Vielen Dank Euch beiden für die Unterstützung!

    Gruß,
    toneytp[/COLOR]

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!