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
– KontaktWenn 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 🙂
ChristianPS:
Post #1 🙂
-
Hallo Christian,
Ist das ein Feature deines Themes oder realisierst du das mit einem Pllugin?
GruĂź
FrankHallo 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
ChristianHallo 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Ăź
FrankHallo 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
ChristianHallo 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Ăź
FrankHallo 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
ChristianHallo Christian,
viel Erfolg und melde dich.
GruĂź
Frank
- Das Thema „Navigation: Child-Items als Anker“ ist für neue Antworten geschlossen.