get_terms() no devuelve términos vacíos aunque hide_empty sea false
1 sept 2014, 14:32:31
Vistas: 23.8K
Votos: 4
No logro hacer que get_terms()
devuelva los términos vacíos y lo he intentado de varias formas.
Aquí está el código:
$terms = get_terms('device',array('hide_empty' => 0));
foreach($terms as $term) {
if($term->parent == 0) {
if($i++ != 0) echo '</optgroup>'; echo '<optgroup label="'.$term->name.'">';
$id = $term->term_id;
$args = array("child_of"=>$id);
$this_term = get_terms('device',$args);
foreach($this_term as $the_term) {
$term_name = str_replace($term->name,'',$the_term->name);
echo '<option value="'.$the_term->term_id.'">'.$the_term->name.'</option>';
}
}
}
He probado todas las formas posibles:
$terms = get_terms('device',array('hide_empty' => false))
$terms = get_terms('device',array('hide_empty' => 0))
$terms = get_terms('device',array('hide_empty=false'))
$terms = get_terms('device',array('hide_empty=0'))
También probé las dos últimas formas sin array
. Nada parece funcionar. Devuelve todos los términos que tienen entradas, pero ninguno vacío.

Alex Dumitru
753
Comentarios
Todas las respuestas a la pregunta
2
1
Estás usando el argumento hide_empty
para $terms
, pero no para $this_term
dentro de tu bucle.
Además, con la forma en que estás generando tu select, sería mucho más eficiente simplemente consultar los términos de nivel superior para el bucle principal:
$terms = get_terms( 'device', array( 'hide_empty' => false, 'parent' => 0 ) );
Y luego eliminar if($term->parent == 0) {...
dentro de tu bucle.

TheDeadMedic
36.6K
1 sept 2014 15:07:36
Preguntas relacionadas
2
respuestas
5
respuestas
1
respuestas
4
respuestas