get_terms - solo términos de nivel superior
Estoy tratando de obtener solo términos de nivel superior:
$cat_args = array(
'parent ' => 0,
'number' => 10,
'hide_empty' => false,
);
$categories = get_terms( 'question_category' , $cat_args);
Pero esta consulta devuelve también todos los términos hijos, he intentado todo pero siempre obtiene los términos hijos también.
Llevo intentándolo desde hace 5 horas y no puedo encontrar qué está mal en mi código, ¿es esto un error de WP o hay algo mal en mi código?
Gracias por la ayuda.

Tu código es correcto, bueno, casi correcto. A primera vista, debo confesar, yo también lo pasé por alto.
Tienes dos errores de sintaxis en tu código. Si miras detenidamente, 'parent '
y 'parent'
no son lo mismo. No debes dejar espacios en blanco entre las comillas simples ('
) y los argumentos.
Además, no necesitas agregar una ,
después de tu último argumento.
Esto debería funcionar
$cat_args = array(
'parent' => 0,
'number' => 10,
'hide_empty' => false
);
ACTUALIZACIÓN 15-06-2016
A partir de WordPress 4.5, la sintaxis ha cambiado para get_terms()
. El parámetro taxonomy
ahora se incluye en el array de argumentos, por lo que el nuevo uso se verá así
$args = [
'taxonomy' => 'my_tax',
'parent' => 0,
'number' => 10,
'hide_empty' => false
];
$terms = get_terms( $args );

Solo una nota: no necesitas agregar ,
después del último argumento del array, SIN EMBARGO, es una buena práctica hacerlo ;)

@jave.web Gracias por eso, lo sé, simplemente no siempre lo hago. ;-)

@jave.web En realidad no es una buena práctica agregar una ,
después del último argumento del array, ya que esto puede romper otros lenguajes que no son tan tolerantes con las comas redundantes. Por ejemplo, JSON se romperá si haces esto.

@Mikepote eso en realidad no es cierto, es una buena práctica y si estás intentando mover código de un lenguaje a otro, deberías usar una conversión/ter adecuada. Es como decir que no puedes tener creaciones de objetos y/o variables como argumentos, porque si copias/pegas se rompe el JSON... Es una buena práctica incluso en JavaScript, por eso el soporte se añadió más tarde en todas partes. Copiar/pegar dentro del mismo lenguaje y proyecto es mucho más probable y añadir la coma final, si es posible, previene ralentizaciones comunes - eso no es solo por mi experiencia, sino también por la experiencia de otros.

@Mikepote Para complementar lo que dice jave.web, no solo es una buena práctica sino que está específicamente recomendado en los Estándares de Codificación PHP de WordPress, que idealmente todo el código específico de WordPress debería seguir: https://make.wordpress.org/core/handbook/best-practices/coding-standards/php/#indentation
