如何按GET_TERMS显示所有类别

时间:2019-05-27 作者:m.javad koushki

我正在使用下面的代码,但只显示父类别,而我有许多子类别。我想显示所有类别,包括家长和孩子

<label for="<?php echo $this->get_field_id( \'link\' ); ?>"><?php _e( \'دسته بندی\' ); ?></label>       
            <select id="<?php echo $this->get_field_id(\'link\'); ?>" name="<?php echo $this->get_field_name(\'link\'); ?>" class="widefat" style="width:100%;">
            <?php foreach(get_terms(\'category\',\'parent=0&hide_empty=false\') as $term) { ?>
            <option <?php selected( $instance[\'link\'], $term->term_id ); ?> value="<?php echo $term->term_id; ?>"><?php echo $term->name; ?></option>
            <?php } ?>      
        </select>

1 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

它之所以只得到父母是因为这一部分:

parent=0
这将查询没有父级的类别,因此您只能获得顶层。删除它,您将获得所有类别:

get_terms(\'category\',\'hide_empty=false\')
话虽如此,你最好使用wp_dropdown_categories(). 这样,您将获得子类别的正确排序和缩进:

<label for="<?php echo $this->get_field_id( \'link\' ); ?>">
    <?php _e( \'دسته بندی\' ); ?>
</label>     

<?php
wp_dropdown_categories(
    [
        \'id\'       => $this->get_field_id( \'link\' ),
        \'name\'     => $this->get_field_name( \'link\' ),
        \'class\'    => \'widefat\',
        \'selected\' => $instance[\'link\'],
    ]
);
?>

相关推荐

如何按照与菜单相同的顺序对Get_Categories()进行排序?

我使用了一个主题,我注意到它在菜单中动态显示了一系列类别:我需要相同的类别列表,但页脚的HTML标记不同。目前,这是我在页脚中的内容:页脚。php:<?php $categories = get_categories(); foreach($categories as $category) { echo \'<a href=\"\' . get_category_link($category->term_id) . \'\"