get_terms - uniquement au niveau supérieur

13

J'essaie d'obtenir uniquement un terme de haut niveau:

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

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

Mais cette requête renvoie également tous les termes enfants, j'ai tout essayé mais elle obtient toujours des termes enfants aussi.

J'essaie depuis les 5 dernières heures et je ne trouve pas ce qui ne va pas dans mon code, est-ce un bug WP ou il y a quelque chose de mal dans mon code?

Merci pour ton aide.

aryen
la source
Je pense que vous voulez dire uniquement les termes de haut niveau de votre taxonomiequestion_category
Pieter Goosen
Oui, je veux dire que
Aryan

Réponses:

21

Votre code est correct, enfin presque correct. À première vue, je dois avouer, je l'ai manqué aussi.

Vous avez deux erreurs de syntaxe dans votre code. Si vous regardez attentivement, 'parent 'et ce 'parent'n'est pas la même chose. Vous ne devez pas laisser d'espaces vides entre guillemets simples ( ') et arguments.

De plus, vous n'avez pas besoin d'ajouter un ,après votre dernier argument.

Cela devrait fonctionner

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

EDIT 15-06-2016

Depuis WordPress 4.5, la syntaxe a changé pour get_terms(). Le taxonomyparamètre est maintenant inclus dans le tableau ou les arguments, donc la nouvelle utilisation ressemblera à ceci

$args = [
    'taxonomy'     => 'my_tax',
    'parent'        => 0,
    'number'        => 10,
    'hide_empty'    => false           
];
$terms = get_terms( $args );
Pieter Goosen
la source
2
Juste une note: vous n'avez pas besoin d'ajouter ,après le dernier argument du tableau, CEPENDANT, c'est une bonne pratique de le faire ;)
jave.web
@ jave.web Merci pour ça, je le sais, je ne fais pas toujours ça. ;-)
Pieter Goosen
@ jave.web Ce n'est en fait pas une bonne pratique d'ajouter un ,après le dernier argument du tableau, car cela casserait les autres langages qui ne sont pas tolérants aux virgules redondantes. Par exemple. JSON se cassera si vous faites cela.
Mikepote
2
@Mikepote qui n'est pas vrai, c'est une bonne pratique et si vous essayez de déplacer du code d'une langue à une autre, vous devez utiliser la conversion / ter appropriée. C'est comme dire que vous ne pouvez pas avoir des créations d'objets et / ou des variables comme arguments, car si vous copiez / collez, cela casse JSON ... C'est une bonne pratique même en JavaScript, donc le support a été ajouté plus tard partout. Copier / coller dans la même langue et le même projet est beaucoup plus probable et l'ajout de la virgule de fin si possible empêche les ralentisseurs courants - ce n'est pas seulement de mon expérience, mais aussi de l'expérience des autres.
jave.web
@Mikepote Pour insister sur ce que jave.web dit, ce n'est pas seulement une bonne pratique, mais spécifiquement recommandé dans les normes de codage PHP WordPress, que idéalement tout le code spécifique à WordPress devrait suivre: make.wordpress.org/core/handbook/best- pratiques /…
Sarah Lewis