get_terms - solo termini di primo livello
Sto cercando di ottenere solo i termini di primo livello:
$cat_args = array(
'parent ' => 0,
'number' => 10,
'hide_empty' => false,
);
$categories = get_terms( 'question_category' , $cat_args);
Ma questa query restituisce anche tutti i termini figli, ho provato di tutto ma continua a recuperare anche i termini figli.
Ci sto provando da 5 ore e non riesco a capire cosa c'è di sbagliato nel mio codice, è un bug di WordPress o c'è qualcosa di sbagliato nel mio codice?
Grazie per l'aiuto.

Il tuo codice è corretto, o quasi. A prima vista, devo ammettere, anch'io l'ho perso.
Ci sono due errori di sintassi nel tuo codice. Se osservi attentamente, 'parent '
e 'parent'
non sono la stessa cosa. Non dovresti lasciare spazi vuoti tra gli apici singoli ('
) e gli argomenti.
Inoltre, non è necessario aggiungere una ,
dopo l'ultimo argomento.
Questo dovrebbe funzionare:
$cat_args = array(
'parent' => 0,
'number' => 10,
'hide_empty' => false
);
MODIFICA 15-06-2016
A partire da WordPress 4.5, la sintassi per get_terms()
è cambiata. Il parametro taxonomy
è ora incluso nell'array degli argomenti, quindi il nuovo utilizzo sarà così:
$args = [
'taxonomy' => 'my_tax',
'parent' => 0,
'number' => 10,
'hide_empty' => false
];
$terms = get_terms( $args );

Solo una nota: non è necessario aggiungere ,
dopo l'ultimo argomento dell'array, TUTTAVIA, è una buona pratica farlo ;)

@jave.web Grazie per il suggerimento, lo so, semplicemente non lo faccio sempre. ;-)

@jave.web In realtà non è una buona pratica aggiungere una ,
dopo l'ultimo argomento dell'array, poiché questo causerà problemi in altri linguaggi che non sono così tolleranti con le virgole ridondanti. Ad esempio, il JSON si interromperà se lo fai.

@Mikepote in realtà non è vero, è una buona pratica e se stai cercando di spostare codice da un linguaggio a un altro, dovresti usare una conversione/terminologia appropriata. È come dire che non puoi avere creazioni di oggetti e/o variabili come argomenti, perché se copi/incolli si rompe il JSON... È una buona pratica anche in JavaScript, motivo per cui il supporto è stato aggiunto successivamente ovunque. Copiare/incollare all'interno dello stesso linguaggio e progetto è molto più probabile e aggiungere la virgola finale, quando possibile, previene comuni rallentamenti - questo non solo per la mia esperienza, ma anche per l'esperienza di altri.

@Mikepote Per aggiungere a quanto dice jave.web, non è solo una buona pratica ma è specificamente raccomandato negli Standard di Codifica PHP di WordPress, che idealmente tutto il codice specifico di WordPress dovrebbe seguire: https://make.wordpress.org/core/handbook/best-practices/coding-standards/php/#indentation
