get_terms - solo términos de nivel superior

14 ago 2014, 14:31:02
Vistas: 29.1K
Votos: 21

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.

2
Comentarios

Creo que te refieres solo a los términos de nivel superior de tu taxonomía question_category

Pieter Goosen Pieter Goosen
14 ago 2014 14:39:41

Sí, me refiero a eso

Aryan Aryan
14 ago 2014 14:40:29
Todas las respuestas a la pregunta 1
6
31

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 );
14 ago 2014 14:59:38
Comentarios

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

jave.web jave.web
15 jun 2016 12:02:24

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

Pieter Goosen Pieter Goosen
15 jun 2016 12:05:16

@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 Mikepote
16 abr 2019 17:20:23

@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.

jave.web jave.web
18 abr 2019 00:26:26

@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

Sarah Lewis Sarah Lewis
3 may 2019 20:29:10

Reconozco mi error.

Mikepote Mikepote
4 may 2019 00:58:31
Mostrar los 1 comentarios restantes