get_terms: solo nivel superior

13

Estoy tratando de obtener solo el término de nivel superior:

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

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

Pero esta consulta también devuelve todos los términos secundarios, probé todo pero siempre obtengo términos secundarios también.

Estoy intentando desde las últimas 5 horas y no puedo encontrar lo que está mal en mi código, ¿es esto un error de WP o hay algo mal en mi código?

Gracias por ayudar.

ario
fuente
Creo que te refieres solo a los términos de nivel superior de tu taxonomíaquestion_category
Pieter Goosen
Sí, me refiero a eso
Aria

Respuestas:

21

Su código es correcto, bueno, casi correcto. A primera vista, debo confesar que también lo extrañé.

Tiene dos errores de sintaxis en su código. Si te fijas bien, 'parent 'y 'parent'no es lo mismo. No debe dejar espacios en blanco entre comillas simples ( ') y argumentos.

Además, no necesita agregar un ,después de su último argumento.

Esto debería funcionar

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

EDITAR 15-06-2016

A partir de WordPress 4.5, la sintaxis ha cambiado para get_terms(). El taxonomyparámetro ahora está incluido en la matriz o los 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 );
Pieter Goosen
fuente
2
Solo una nota: no necesita agregar ,después del último argumento de matriz, SIN EMBARGO, es una buena práctica hacerlo ;)
jave.web
@ jave.web Gracias por eso, lo sé, pero no siempre hago eso. ;-)
Pieter Goosen
@ jave.web En realidad no es una buena práctica agregar un ,argumento después del último arreglo, ya que esto romperá otros lenguajes que no son tan tolerantes a las comas redundantes. P.ej. JSON se romperá si haces esto.
Mikepote
2
@Mikepote que en realidad no es cierto, es una buena práctica y si está tratando de mover el código de un idioma a otro, debe usar la conversión / ter adecuada. Es como decir que no puede tener creaciones de objetos y / o variables como argumentos, porque si copia / pega rompe JSON ... Es una buena práctica incluso en JavaScript, por lo tanto, el soporte se agregó más adelante en todas partes. Copiar / pegar dentro del mismo lenguaje y proyecto es mucho más probable y, si es posible, agregar la coma final evita los retrasos comunes , eso no es solo por mi experiencia, sino también por la experiencia de otros.
jave.web
@Mikepote Para agregar a lo que dice jave.web, no solo es una buena práctica, sino que se recomienda específicamente en los estándares de codificación PHP de WordPress, que idealmente deben seguir todos los códigos específicos de WordPress: make.wordpress.org/core/handbook/best- prácticas / ...
Sarah Lewis