wp_menu_nav: Nur Unterebene anzeigen

  • Wie zeige ich nur die Unterebene(n) von einem WP3-Menü an?


    Will in der Seitenleiste eine Subnavigation erstellen.
    Bin drauf und dran, dies über leere Pages zu erledigen, die ich direkt weiterverweise (NathanRice-Plugin 'custom_field_redirect') auf die gewünschten Unterebenen.
    Kommt mir aber irgendwie unintelligent vor... leere Seiten für nüscht??

    ;-)

    WP 3.4.2 | MAMP 2.1.1 | MBP OSX 10.6.8

    • 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

  • Ich nehme an, Du hast ein Menü, das irgendwie so aufgebaut ist, oder?

    - Oberpunkt
    -- Unterpunkt
    -- Unterpunkt 2
    - Oberpunkt 2
    -- Unterpunkt
    -- Unterpunkt 2
    - Oberpunkt 3

    Wenn Du nun auf Oberpunkt 2 beispielsweise bist, soll in der Subnavi nur

    - Unterpunkt
    - Unterpunkt 2

    angezeigt werden?

    Dafür wirst Du nicht drumrumkommen, dir eine eigene Walker-Klasse für wp_nav_menu zu schreiben. Dafür siehst Du dir am besten diese Datei an:

    /wp-includes/nav-menu-template.php

    Dort ist der Walker zu finden, den Du dann als eigene Klasse in deine functions.php kopieren und nach deinen Bedürfnissen anpassen kannst. Ist aber schon einiges an Programmierarbeit...

    Gruß,
    Marcus

  • Hallo Marcus,

    Deine Interpretation ist richtig, so soll die Subnav aussehen.

    Ich kenne mich mit PHP generell und mit WP, was das Coding angeht, nicht sehr gut aus. Bin am Lernen und habe auch tolle Bücher hier, ist aber alles Neuland.
    Ich kann ja noch nicht ein Mal eine Klasse von einem Objekt unterscheiden, geschweige denn verstehen, was in der wp_nav_menu.php-Datei drinsteht...

    Ist der oben skizzierte Weg wirklich der einzig gangbare (Frage ins Plenum)?

    WP 3.4.2 | MAMP 2.1.1 | MBP OSX 10.6.8

  • Hi

    Nachdem ich gerade den Sinn nicht zu 100% verstehe, schau doch mal auf meine Seite.

    Wenn Du z.B.: Das Wort "Referenzen" anklickst, erscheint der Rest der Unterkatgeorien / Seite

    ist es dies wie Du es gerne möchtest????


    Gruß

    Chaote

  • Nein, so ist es nicht gemeint, schon eher so wie von Marcus Kober skizziert.

    Ich habe ein horizontales Menü mit drei Punkten, deren Unterpunkte ich aber nicht zusammen mit den Hauptpunkten anzeigen möchte, sondern separat in einer Sidebar links.
    Im Backend ist das Menü normal über den WP3-Menüpunkt "Menü" mit allen Unterpunkten erstellt.
    Die horizontale Navigation ist auf depth=1 eingestellt, damit keine Sublevels angezeigt werden.

    Aber wie die Sublevels ohne die parents anzeigen?

    WP 3.4.2 | MAMP 2.1.1 | MBP OSX 10.6.8

  • Für ein Kunden-Projekt arbeite ich derzeit an einer ähnlichen Funktion. Da ich aber mehrere Kunden zu betreuen habe und die Funktion eher zweitrangig ist, kann das allerdings noch etwas dauern.

    Wenn ich aber eine fertige und funktionierende Version habe, poste ich das hier gern. :) Mir fällt nämlich sonst auch keine praktikable und ressourcenschonende Möglichkeit ein, sowas zu implementieren...

  • Habe jetzt auf die schnelle eine Lösung gefunden. Für meine Installation funktioniert sie. Allerdings reicht es dazu nicht, die Hierarchie im Menü festzulegen - die Seiten müssen zwingend auch in der entsprechenden Hierarchie angeordnet sein (Elternseiten definiert).

    In die functions.php des Themes kommt folgender Code (zum Beispiel ganz ans Ende):

    Und dann erzeugst Du das Menü mit folgendem Parameter:

    PHP
    wp_nav_menu( array( 'walker' => new MySublevelWalker(), 'theme_location' => 'xxx' ) );

    Natürlich musst Du bei xxx die richtige Bezeichnung eintragen...

    Probier das mal aus und sag bescheid, ob es funktioniert. :) Ich gebe keinerlei Garantie. :)

    Gruß,
    Marcus

Jetzt mitmachen!

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