下拉类别表单。仅显示子类别

时间:2021-02-23 作者:Jon

我正在尝试让一个类别下拉列表工作。我有一个自定义的帖子类型,叫做;播客“;自定义分类法称为;podcast\\u类别;。

我想显示的是一个类别列表,这些类别是;建筑规范;。通常对于帖子,我会使用Tax\\u查询,但很难弄清楚这一点。

<form class="js-filter-form">
            <select name="categories" id="categories">
                <?php
                
                    $cat_args = array(
                        \'post_type\' => \'podcast\',
                        \'taxonomy\' => \'podcast_category\'
                    );

                    $categories = get_categories($cat_args); ?>
                    <option value="">All</option>
                    <?php
                    foreach($categories as $cat) : ?>
                        <option class="js-filter-item" value="<?= $cat->term_id; ?>">
                            <?= $cat->name; ?>
                        </option>
                <?php endforeach; ?>
            </select>
        </form>

1 个回复
SO网友:Jacob Peattie

您只需设置parent 的参数get_categories() (或者更好,get_terms() 到的IDthe-building-code 学期如果您不知道ID,则需要首先检索该ID:

<form class="js-filter-form">
    <select name="categories" id="categories">
        <?php
        $parent = get_term_by( \'slug\', \'the-building-code\', \'podcast_category\' );
        $cat_args = array(
            \'taxonomy\' => \'podcast_category\',
            \'parent\' => $parent->term_id,
        );

        $categories = get_categories($cat_args); ?>
        <option value="">All</option>
        <?php
        foreach($categories as $cat) : ?>
            <option class="js-filter-item" value="<?= $cat->term_id; ?>">
                <?= $cat->name; ?>
            </option>
    <?php endforeach; ?>
    </select>
</form>
还请注意,没有post_type 的参数get_categories()get_terms(), 所以我把它拿走了。