此函数仅从自定义分类子类别创建选择菜单。
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
。