get_terms - tylko najwyższy poziom

13

Próbuję uzyskać tylko termin najwyższego poziomu:

$cat_args = array(
    'parent '       => 0,
    'number'        => 10,
    'hide_empty'    => false,           
);

$categories = get_terms( 'question_category' , $cat_args); 

Ale to zapytanie zwraca również wszystkie childtermy, próbowałem wszystkiego, ale zawsze otrzymywało również terminy potomne.

Próbuję od ostatnich 5 godzin i nie mogę znaleźć tego, co jest źle w moim kodzie, czy to błąd WP, ​​czy coś jest nie tak z moim kodem?

Dzięki za pomoc.

aryjski
źródło
Myślę, że masz na myśli wyłącznie warunki najwyższego poziomu z taksonomiiquestion_category
Pieter Goosen
Tak, mam na myśli to
Aryan

Odpowiedzi:

21

Twój kod jest poprawny, prawie poprawny. Na pierwszy rzut oka muszę wyznać, że też tego przegapiłem.

W kodzie występują dwa błędy składniowe. Jeśli przyjrzysz się uważnie 'parent 'i 'parent'to nie to samo. Nie należy pozostawiać pustych spacji między pojedynczymi cudzysłowami ( ') a argumentami.

Ponadto nie musisz dodawać znaku ,po ostatnim argumencie.

To powinno działać

$cat_args = array(
    'parent'        => 0,
    'number'        => 10,
    'hide_empty'    => false           
);

EDYCJA 15-06-2016

Od wersji WordPress 4.5 składnia uległa zmianie get_terms(). taxonomyParametr jest obecnie zawarte w tablicy lub args, więc nowe zastosowanie będzie wyglądać następująco

$args = [
    'taxonomy'     => 'my_tax',
    'parent'        => 0,
    'number'        => 10,
    'hide_empty'    => false           
];
$terms = get_terms( $args );
Pieter Goosen
źródło
2
Tylko uwaga: nie trzeba dodawać ,po ostatnim argumencie tablicy, JEDNAK to dobra praktyka ;)
jave.web
@ jave.web Dzięki za to, wiem o tym, po prostu nie zawsze to robię. ;-)
Pieter Goosen
@ jave.web W rzeczywistości nie jest dobrą praktyką dodawanie ,argumentu po ostatniej tablicy, ponieważ spowoduje to uszkodzenie innych języków, które nie są tak tolerancyjne dla zbędnych przecinków. Na przykład. JSON pęknie, jeśli to zrobisz.
Mikepote
2
@Mikepote, które tak naprawdę nie jest prawdą, jest to dobra praktyka i jeśli próbujesz przenieść kod z jednego języka na inny, powinieneś użyć właściwej konwersji / ter. To tak, jakby powiedzieć, że nie możesz tworzyć obiektów i / lub zmiennych jako argumentów, ponieważ jeśli kopiujesz / wklejasz, łamie JSON ... Jest to dobra praktyka nawet w JavaScript, dlatego wsparcie zostało dodane później wszędzie. Kopiuj / wklej w tym samym języku i projekcie jest znacznie bardziej prawdopodobne, a dodanie przecinka, jeśli to możliwe, zapobiega powszechnym spowolnieniom - to nie tylko z mojego doświadczenia, ale także z doświadczenia innych.
jave.web
@Mikepote Aby wyjaśnić to, co mówi jave.web, jest to nie tylko dobra praktyka, ale szczególnie zalecana w Standardach Kodowania PHP WordPress, które idealnie powinien spełniać cały
Sarah Lewis