wake-up-neo.com

get_terms () gibt keine leeren Terme zurück, obwohl hide_empty false ist

Ich kann get_terms() nicht dazu bringen, die leeren Begriffe zurückzugeben, und ich habe es auf verschiedene Arten versucht.

Hier ist der Code:

$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>';
            }
        }
    }

Ich habe alle möglichen Möglichkeiten ausprobiert:

$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'))

Habe auch die letzten beiden Möglichkeiten ohne array ausprobiert. Nichts scheint zu funktionieren. Es werden alle Begriffe mit Beiträgen zurückgegeben, jedoch keine leeren.

2
Alex Dumitru

Sie verwenden das Argument hide_empty für $terms, jedoch nicht für $this_term in Ihrer Schleife.

Mit der Art und Weise, wie Sie Ihre Auswahl generieren, wäre es auch viel effizienter, nur Begriffe der obersten Ebene für die Hauptschleife abzufragen:

$terms = get_terms( 'device', array( 'hide_empty' => false, 'parent' => 0 ) );

Und dann lassen Sie if($term->parent == 0) {... in Ihrer Schleife fallen.

6
TheDeadMedic

Ich habe das Problem gefunden.

Ich benutze get_terms() zweimal, einmal für die Eltern und einmal für die Kinder. Es scheint, als hätte ich dem, der die Kinder bekommt, keinen hide_empty=false hinzugefügt.

0
Alex Dumitru