Grzebałam / szukałam godzinami i wciąż nie mogę tego zrobić, więc w końcu poddaję się i proszę o pomoc.
Próbuję napisać niestandardowy walker, który pokazuje tylko bieżące strony potomne, lub jeśli nie ma dzieci wyświetlających rodzeństwo stron.
Na przykład weź następujące drzewo menu:
- 1.0
- 1.2.0
- 1.3.0
- 1.3.1
- 1.3.2
- 1.2.1
- 1.2.2
- 1.2.0
- 2.0
Załóżmy, że jestem na bieżącej stronie 1.2.0. Na tej stronie chcę wyświetlić jego dzieci (1.3.0, 1.3.1, 1.3.2)
jednak jeśli jestem na stronie 1.2.2, ponieważ nie ma żadnych dzieci, powinien wyświetlić swoje rodzeństwo na obecnym poziomie, więc powinien mi to pokazać (1.2.0, 1.2.1, 1.2.2).
Odpowiedzi:
To jest walker, w którym wyświetlałem tylko elementy potomne bieżącego elementu menu. Lub rodzeństwo elementów menu, jeśli nie ma własnych dzieci.
W całej klasie znajdują się komentarze wyjaśniające każdą sekcję
Dołącz go tak, jak w przypadku każdego innego niestandardowego walkera w menu wp_nav_menu
źródło
Miałem podobne doświadczenie. Możesz pomyśleć o przeniesieniu logiki stron poza walker. Zasadniczo skompiluj bieżącą hierarchię stron jako obiekt. Następnie użyj parametru „wyklucz” w funkcji wp_nav_menu. Teraz wykluczone strony zależą od tego, czy bieżąca strona ma elementy potomne. Jeśli żadne dzieci nie pokazują braci; jeśli dzieci i te dzieci są na końcu linii, pokażcie bracia i dzieci; jeśli istnieją dzieci, dzieci i wnuki, wyklucz braci i pokaż dzieci i wnuki.
źródło
exclude
parametru się odnosisz? Patrzę na dokumentację i nie widzę żadnych odniesień do niej.wp_list_pages()
w tym kontekście, więc to ciekawy pomysł.