你需要extend
这个Walker_CategoryDropdown
沃克。一个非常简单的版本是:
class Top_level_Optgroup extends Walker_CategoryDropdown {
var $optgroup = false;
function start_el( &$output, $category, $depth = 0, $args = array(), $id = 0 ) {
$pad = str_repeat(\' \', $depth * 3);
$cat_name = apply_filters(\'list_cats\', $category->name, $category);
if (0 == $depth) {
// $this->optgroup = true;
$output .= "<optgroup class=\\"level-$depth\\" label=\\"".$cat_name."\\" >";
} else {
$output .= "<option class=\\"level-$depth\\" value=\\"".$category->term_id."\\"";
if ( $category->term_id == $args[\'selected\'] )
$output .= \' selected="selected"\';
$output .= \'>\';
$output .= $pad.$cat_name;
if ( $args[\'show_count\'] )
$output .= \' (\'. $category->count .\')\';
$output .= "</option>";
}
}
function end_el(&$output,$object,$depth) {
if (0 == $depth/* && true == $this->optgroup*/) {
$output .= \'</optgroup>\';
}
}
}
// usage test
wp_dropdown_categories(
array(
\'orderby\' => \'name\',
\'hide_empty\' => 0,
\'show_count\' => 1,
\'show_option_none\' => \'Select one\',
\'class\' => \'cat\',
\'hierarchical\' => 1,
\'name\' => \'cat\',
\'walker\' => new Top_level_Optgroup
)
);
假设最上面的——
depth === 0
-- 类别是
optgroup
. 这是非常简单的逻辑,但似乎符合您的示例。这个助行器既不寻找也不关心类别子级的存在与否,如果您的实际类别结构比示例中的更复杂,则可能无法正常工作。