get_terms - apenas nível superior

13

Estou tentando obter apenas o termo de nível superior:

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

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

Mas essa consulta também retorna todos os childterms, tentei de tudo, mas sempre obtive termos filhos também.

Estou tentando desde as últimas 5 horas e não consigo encontrar o que há de errado no meu código, isso é um bug do WP ou há algo errado no meu código?

Obrigado por ajudar.

Ariano
fonte
Eu acho que você quer dizer termos de nível única de topo de sua taxonomiaquestion_category
Pieter Goosen
Sim, quero dizer que
Aryan

Respostas:

21

Seu código está correto, quase correto. À primeira vista, devo confessar, também senti falta disso.

Você tem dois erros de sintaxe no seu código. Se você olhar de perto, 'parent 'e 'parent'não é o mesmo. Você não deve deixar espaços em branco entre aspas simples ( ') e argumentos.

Além disso, você não precisa adicionar um ,após o seu último argumento.

Isso deve funcionar

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

EDIT 15-06-2016

A partir do WordPress 4.5, a sintaxe mudou get_terms(). O taxonomyparâmetro agora está incluído na matriz ou args, portanto, o novo uso será parecido com este

$args = [
    'taxonomy'     => 'my_tax',
    'parent'        => 0,
    'number'        => 10,
    'hide_empty'    => false           
];
$terms = get_terms( $args );
Pieter Goosen
fonte
2
Apenas uma nota: você não precisa adicionar ,após argumento última matriz, NO ENTANTO, é uma boa prática para fazê-lo ;)
jave.web
@ jave.web Obrigado por isso, eu sei disso, eu nem sempre faço isso. ;-)
Pieter Goosen
@ jave.web Na verdade, não é uma boa prática adicionar um ,argumento após o último array, pois isso interromperá outras linguagens que não são tolerantes a vírgulas redundantes. Por exemplo. JSON irá quebrar se você fizer isso.
Mikepote
2
@ Mikepote que na verdade não é verdade, é uma boa prática e se você estiver tentando mover o código de um idioma para outro, use a conversão / ter adequada. É como dizer que você não pode ter criações de objetos e / ou variáveis ​​como argumentos, porque se você copiar / colar, ele quebrará o JSON ... É uma boa prática, mesmo em JavaScript, portanto, o suporte foi adicionado posteriormente em todos os lugares. Copiar / colar dentro do mesmo idioma e projeto é muito mais provável e a adição de vírgula à direita, se possível, evita lentidões comuns - isso não é apenas da minha experiência, mas também da experiência de outras pessoas.
precisa saber é o seguinte
@Mikepote Para seguir o que o jave.web está dizendo, não é apenas uma boa prática, mas especificamente recomendada nos Padrões de codificação PHP do WordPress, que idealmente todo código específico do WordPress deve seguir: make.wordpress.org/core/handbook/best- práticas /…
Sarah Lewis