如何从 ID 获取自定义分类父类别名称


How to get custom taxonomy parent category name from ID?

此函数仅从自定义分类子类别创建选择菜单。

function cityDropdown($dropID, $taxonomy, $exclude) {
    $catArgs = array(
    'orderby'                  => 'name',
    'order'                    => 'ASC',
    'hide_empty'               => 0,
    'hierarchical'             => 1,
    'exclude'                  => $exclude,
    'taxonomy'                 => $taxonomy,
    'pad_counts'               => false );


    $categories = get_categories( $catArgs );
    $menu = '<select name="cityDropdown" id="'.$dropID.'">';
    $menu .= '<option value="">(City)</option>';
    foreach($categories as $category)
    {

        if($category->parent != 0 ) {
            $parent = $category->category_parent;
            $menu .= '<option class="'.$parent.'" value="'.$category->name.'" name="'.$category->name.'">'.$category->name.'</option>';
        }
    }   
    $menu .= '</select>';
    echo $menu;
}

它工作正常,除了一件事:

$parent = $category->category_parent;

给了我父类别的 ID,这很酷,而且它适用于我需要做的事情,但是,如果它可以给我父类别的名称而不是 ID,那就更好了。

我尝试了single_term_title($parent)什么也没做,我也尝试了single_cat_title($parent)但也返回空白。

尝试$parent_term = get_term($parent,'category') 。 然后$parent_term->name,虽然如果你要基于一个术语来创建一个类,我会使用 $parent_term->slug ,因为->name可以给你空间,这对于 CSS 类名来说是不可取的,但你真的不能给选项标签一个类(见下文(。

额外:

根据 http://www.w3schools.com/tags/tag_option.asp,<option>标签实际上没有name属性。 您可能希望给它一个id而不是name

此外,当我执行动态生成的选项时,我尝试将 value 属性视为我想用作数组索引或变量名称的 id,因此我喜欢确保它是整数或可靠的无空格文本 id。 对于WP分类法,我建议使用$category->term_id或$category->slug作为值,当然,因为内部html具有$category->name。

你快到了。若要返回自定义分类术语的完整数据数组,请尝试:

$parent = get_term( $category->category_parent, $taxonomy );

现在,您将可以访问术语数组,其中包括 $parent->name$parent->slug$parent->description