Mam hierarchiczną taksonomię zwaną „lokalizacjami geograficznymi”. Zawiera kontynenty na pierwszym poziomie, a następnie kraje dla każdego z nich. Przykład:
Europe
- Ireland
- Spain
- Sweden
Asia
- Laos
- Thailand
- Vietnam
itp.
Za pomocą get_terms () udało mi się wypisać pełną listę terminów, ale kontynenty mieszają się z krajami, w jednej dużej płaskiej liście.
Jak wygenerować hierarchiczną listę jak wyżej?
taxonomy
list
terms
hierarchical
mike23
źródło
źródło
Odpowiedzi:
Użyj
wp_list_categories
z'taxonomy' => 'taxonomy'
argumentem, jest zbudowany do tworzenia hierarchicznych list kategorii, ale będzie również obsługiwał niestandardową systematykę.Przykład Kodeksu:
Wyświetl warunki w niestandardowej taksonomii
Jeśli lista wróci i wygląda płasko, możliwe jest, że wystarczy trochę CSS, aby dodać dopełnienie do list, aby zobaczyć ich hierarchiczną strukturę.
źródło
Zdaję sobie sprawę, że jest to bardzo stare pytanie, ale jeśli musisz zbudować rzeczywistą strukturę terminów, może to być przydatna metoda:
Użycie jest następujące:
źródło
$into[$cat->term_id] = $cat;
na$into[] = $cat;
Posiadanie identyfikatora terminu, ponieważ klucz tablicy jest denerwujący (nie można łatwo uzyskać pierwszego elementu za pomocą klawisza 0) i jest bezużyteczny (przechowuje się już$cat
obiekt i można uzyskać identyfikator korzystając zterm_id
nieruchomościNie znam żadnej funkcji, która robi to, co chcesz, ale możesz zbudować coś takiego:
Nie testowałem tego, ale widać, o co mi chodzi. Powyższy kod da ci tylko dwa poziomy
EDYCJA: ahh tak, możesz użyć wp_list_categories () do robienia tego, co chcesz.
źródło
wp_list_categories()
aby dodać parametry GET. Lub jeszcze lepiej zbuduj filtr dla funkcji, aby dodać żądane bity. Nie pytaj mnie, jak to robisz, ponieważ nie byłem jeszcze w stanie tego ogarnąć :(wp_list_categories
jeśli chcesz większą kontrolę nad wyjściem, będzie to zrobić znacznie więcej kodu wielokrotnego użytku ..Możesz użyć wp_list_categories () z argumentem „taksonomia”.
źródło
Ponieważ szukałem tego samego, ale aby uzyskać warunki jednego posta, w końcu skompilowałem to i działa dla mnie.
Co robi:
• otrzymuje wszystkie warunki nazwy taksonomicznej dla określonego stanowiska.
• dla taksonomii hierarchicznej z dwoma poziomami (np. Poziom 1: „kraj” i poziom 2: „miasta”), tworzy h4 z poziomem 1, po którym następuje lista ul poziomu 2 i to dla wszystkich elementów poziomu 1.
• jeśli taksonomia nie jest hierarchiczna, utworzy tylko listę ul wszystkich pozycji. oto kod (piszę go dla siebie, więc starałem się być tak ogólny, jak tylko potrafię, ale ...):
Więc w końcu wywołujesz funkcję w ten sposób (oczywiście zamieniasz my_taxonomy na swój):
finishingLister('my_taxonomy');
Nie udaje, że jest idealny, ale jak powiedziałem, działa dla mnie.
źródło
Poniższy kod wygeneruje listę rozwijaną z terminami, ale może również wygenerować dowolny inny element / strukturę, edytując zmienną $ outputTemplate i edytując linie str_replace:
źródło
Miałem ten problem i żadna z odpowiedzi tutaj nie działała dla mnie z tego czy innego powodu.
Oto moja zaktualizowana i działająca wersja.
I użycie:
źródło
Użyłem kodu @popsi, który działał naprawdę dobrze i uczyniłem go bardziej wydajnym i łatwym do odczytania:
Stosowanie :
źródło
Upewnij się, że
hierarchical=true
został przekazany do twojegoget_terms()
połączenia.Pamiętaj, że
hierarchical=true
jest to ustawienie domyślne, więc naprawdę upewnij się, że nie zostało to nadpisanefalse
.źródło
get_terms()
zwróci pełną listę warunków (jak stwierdził PO), ale nie hierarchiczną listę pokazującą relacje rodzic / dziecko zgodnie z żądaniem.Tutaj mam czteropoziomową listę wyboru z ukrytym pierwszym elementem
źródło