Support » Allgemeine Fragen » Navigation: Child-Items als Anker

  • Hallo zusammen 🙂

    Ich scheitere an einem – aus meiner Sicht – eigentlich einfachen Thema.

    Ich habe in WordPress diverse Seiten mit Unterseiten. Beispiel:
    – Home
    – Team
    – Ich
    – Du
    – Kontakt

    Wenn eine der „normalen“ Seiten geöffnet wird, werden alle Childs darin gerendert. Sprich: Klicke ich auf „Team“ wird der Inhalt von „Ich“ und „Du“ ausgegeben (obwohl das eigenständige Seiten sind in der WP Admin).

    Ich möchte nun, dass wenn der Benutzer auf „Ich“ oder „Du“ klickt, dass diese Seiten das Parent-Item („Team“) öffnen und direkt zum jeweiligen Anker (Slug-Name) springt. Also etwas im Sinne von /team#ich

    Soweit ich via Google rausfinden konnte ist das irgendwie mit einem Custom Walker zu erreichen. Aber ich scheitere ganz böse da irgendwas hinzukriegen. Oder ist dies vielleicht sogar der falsche Weg?

    Ich wĂĽrde ungern ĂĽber Custom MenĂĽs etc die Lösung realisieren – das Ding sollte sich möglichst „automatisch“ korrekt verhalten… 🙂

    Falls irgendwer hier Hinweise zur Lösungsfindung hat oder gar ein Snippet posten kann wäre ich sehr dankbar!

    Danke & Grüsse aus der arktisch kalten Schweiz 🙂
    Christian

    PS:
    Post #1 🙂

Ansicht von 7 Antworten - 1 bis 7 (von insgesamt 7)
  • Hallo Christian,

    Ist das ein Feature deines Themes oder realisierst du das mit einem Pllugin?

    GruĂź
    Frank

    Thread-Starter Webleister

    (@webleister)

    Hallo Frank

    Das Theme habe ich selber erstellt (basierend auf dem Bones-Theme) und auch die Funktionalität zum Darstellen der Childs im Parent habe ich selber umgesetzt.

    Ich dachte eigentlich daran, dass ich die Erweiterung der Navigation auch als Theme-Feature einbaue und nicht als eigenständiges Plugin.

    Gruss
    Christian

    Hallo Christian.

    Ich möchte nun, dass wenn der Benutzer auf „Ich“ oder „Du“ klickt,

    Wo klickt er? Im MenĂĽ, welches mit WP Bordmitteln generiert wird?

    WordPress holt die Einträge über die Funktion wp_get_nav_menu_items ( http://codex.wordpress.org/Function_Reference/wp_get_nav_menu_items )
    die einen gleichnamigen Hook als Filter triggert.

    Du kannst also mit

    add_filter( 'wp_get_nav_menu_items', 'filter_menu', 10, 3 );
    
    function filter_menu( $items, $menu, $args ) {
        // Hier kannst Du das MenĂĽ manipulieren.
        // Beispielhaft der Code von meinem Disable-Title
        // Plugin das ausgewählte Seiten aus dem Menü
        // entfernt.
        foreach ( $items as $key => $item ) {
            $id = $item->object_id;
            $unvisible = get_post_meta( $id, '_z8n-fs-disable-title-menu', true );
                if ( $unvisible == 1 ) {
                    unset( $items[ $key ] );
                }
        }
        return ( $items );
    }

    das Menü noch verändern.

    GruĂź
    Frank

    Thread-Starter Webleister

    (@webleister)

    Hallo Frank

    Danke fĂĽr die ausfĂĽhrliche Antwort!

    Er klickt im MenĂĽ selber, ja. Eigentlich wird hier das Bones-Menu aufgerufen. Ich habe dies jedoch (testweise) durch wp_nav_menu() ersetzt.

    Danach habe ich Deinen Code leicht verändert eingesetzt:

    foreach ( $items as $key => $item ) {
            unset( $items[ $key ] );
    }

    Nach meinem Verständnis sollte dies eigentlich alle Items „killen“. Tut es nicht – es passiert rein gar nichts.

    Verstehe grad nicht woran das liegt bzw. wieso da *gar nichts* ausgefĂĽhrt wird. Habe auch andere solche Filter (WordPress Seite) ausprobiert aber da passiert gar nichts…

    Muss ich dem Menü ausser via add_filter noch irgendwie mitteilen, dass es meine Function auch *wirklich* beachten soll? 🙂

    Gruss & Danke fĂĽr Deine Hilfe
    Christian

    Hallo Christian,

    Aber das richtige MenĂĽ ist es schon, was er ausgibt?

    Hast du WP_Debug aktiviert um zu sehen ob es Warnings/Error gibt?

    Hast du mal Debugcode eingestreut um zu sehen ob dein Filter ĂĽberhaupt aufgerufen wird.

    Du hast das add_filter auch an einer Stelle, wo es aufgerufen wird?
    Normalerweise in der functions.php und es ist auch nicht in irgendwelche if’s gekapselt die es nur in bestimmten Fällen aufrufen?

    GruĂź
    Frank

    Thread-Starter Webleister

    (@webleister)

    Hallo Frank

    Besten Dank fĂĽr Deine Tipps!

    Nein, Debugcode hatte ich bisher nirgends explizit platziert. Dies habe ich nachgeholt und festgestellt, dass die Hälfte gar nicht beachtet wird.

    Scheint als hätte ich ein grundsätzliches Problem mit meinem Code. Werde das in Ruhe nochmals auf einer „sauberen“ WordPress Installation anschauen und mich dann bei Bedarf nochmals melden 🙂

    Gruss & happy Weekend
    Christian

    Hallo Christian,

    viel Erfolg und melde dich.

    GruĂź
    Frank

Ansicht von 7 Antworten - 1 bis 7 (von insgesamt 7)
  • Das Thema „Navigation: Child-Items als Anker“ ist fĂĽr neue Antworten geschlossen.