Custom Nav Walker, um Geschwister und Kinder des aktuellen Zweiges anzuzeigen?

Ich habe ähnliche (wenn auch nicht exakte) Suchanfragen in ganz Google gesehen, aber ich finde immer etwas, was ich nicht brauche. Ich versuche, mein vollständiges vertikales Menü unter Verwendung von wp_nav_menu in meiner Vorlage zu erstellen. Nur ich möchte nur den aktuellen Zweig, Geschwister und ihre Kinder zeigen. Eine Art Ziehharmonika-Menü. Ich bevorzuge dies in PHP, nicht mit CSS oder JQuery.

Beispiel vollständiges Menü:

- Home - Products - Cool Item 1 - Item 1 Details - Item 1 Gallery - Cool Item 2 - Item 2 Details - Item 2 Gallery - Services - Svc 1 - Svc 2 

Wenn ich zum Beispiel den aktuellen Artikel “Cool Item 1” habe, möchte ich alle Root-Menüpunkte, alle Produkte, aber nur Kinder von “Cool Item 1”, keine Kinder von “Cool Item 2” oder irgendwelche Services sehen. Wie unten:

 - Home - Products - Cool Item 1 (-current page-) - Item 1 Details - Item 1 Gallery - Cool Item 2 - Services 

Wenn ich auf Dienste klicke, möchte ich Folgendes sehen:

 - Home - Products - Services (-current page-) - Svc 1 - Svc 2 

Derzeit habe ich in meiner benutzerdefinierten walker die Star_el-Methode wie folgt: (make_menu_item ist typische Menüanzeige, die Sie walker suchen sehen würde)

 function start_el(&$output, $item, $depth, $args) { // am I on the current Item? if($item->current_item_ancestor or $item->current_item_parent or $item->current){ $cur_branch = true; } // this works for all current branch items, but not siblings or children if( $cur_branch || $depth == 0 ) { $output .= $this->make_menu_item($item, $depth, $args); } else { // need to know if my parents are in current branch, then OK to show children // not sure how to do that from this point? if($item->menu_item_parent && $depth > 0) { // this currently shows everything, not what I want // if this is removed, no children objects show, even under cur_branch $output .= $this->make_menu_item($item, $depth, $args); } } } 

Ich weiß, dass diese Logik wahrscheinlich nicht die beste ist, aber es ist ein Anfang. Ich kann leicht sagen, ob ich mich im “aktuellen Zweig” des Menüs befinde, und ich habe $ item-> hasChildren in der display_elements -Methode eingerichtet, aber hasChildren macht mir nichts Gutes für aktuelle Kinder. Es wäre sehr hilfreich, wenn ich zu diesem Zeitpunkt genau wüsste, ob mein Elternobjekt im aktuellen Zweig ist oder nicht, weil ich entweder den Menüpunkt anzeigen kann oder nicht, was ich will.

Ich könnte eine SQL-Abfrage machen, aber das tue ich eher nicht. Gibt es eine Möglichkeit, Elterninformationen in den walker-Arrays und Objekten verfügbar zu machen ($ item oder $ elements?)? Vielleicht mache ich das alles falsch? Scheint so, als ob es leicht sein sollte, Elterninformationen zu bekommen, aber das Aufrufen von get_ancestors () gibt mir ein leeres Array.

Danke für jede Hilfe! Greg

Solutions Collecting From Web of "Custom Nav Walker, um Geschwister und Kinder des aktuellen Zweiges anzuzeigen?"

Nun, so sehr ich es vorziehe, meinen eigenen Walker und die Kontrolle über das Nav zu haben, habe ich ein Plugin gefunden, das genau das tut, was ich will: Advanced Menu Widget http://wordpress.org/extend/plugins/advanced-menu-widget/

Nur etwas getestet, aber es funktioniert genau so, wie ich es erwartet habe, wählen Sie einfach “Nur streng zusammenhängendes Untermenü” in der Menü-Widget-Konfiguration. Ich sollte anmerken, dass ich bereits bei anderen Anfänger-Theme-Entwicklern wie mir dieses Plugin einmal probiert habe und nicht herausfinden konnte, wie ich es konfigurieren soll. (Konnte die Widget-Konfiguration nicht finden) Nun, das war nur aufgrund der Tatsache, dass mein Theme keine Sidebars aktiviert hatte, also keine Widgets!

Wie auch immer, ich mag es nicht, wenn ich ein Plugin für mein Theme NAV verwende, aber es funktioniert so gut, und ich muss es nicht bauen. 🙂 Problem getriggers.