是的,这是可能的。wp_list_categories
接受可以处理此问题的(自定义)walker。
将以下内容放入functions.php
文件:
class Custom_Walker_Category extends Walker_Category {
function start_el( &$output, $category, $depth = 0, $args = array(), $id = 0 ) {
extract($args);
$cat_name = esc_attr( $category->name );
$cat_name = apply_filters( \'list_cats\', $cat_name, $category );
$link = \'<a href="\' . esc_url( get_term_link($category) ) . \'" \';
if ( $use_desc_for_title == 0 || empty($category->description) )
$link .= \'title="\' . esc_attr( sprintf(__( \'View all posts filed under %s\' ), $cat_name) ) . \'"\';
else
$link .= \'title="\' . esc_attr( strip_tags( apply_filters( \'category_description\', $category->description, $category ) ) ) . \'"\';
$link .= \'>\';
$link .= $cat_name . \'</a>\';
if ( !empty($feed_image) || !empty($feed) ) {
$link .= \' \';
if ( empty($feed_image) )
$link .= \'(\';
$link .= \'<a href="\' . esc_url( get_term_feed_link( $category->term_id, $category->taxonomy, $feed_type ) ) . \'"\';
if ( empty($feed) ) {
$alt = \' alt="\' . sprintf(__( \'Feed for all posts filed under %s\' ), $cat_name ) . \'"\';
} else {
$title = \' title="\' . $feed . \'"\';
$alt = \' alt="\' . $feed . \'"\';
$name = $feed;
$link .= $title;
}
$link .= \'>\';
if ( empty($feed_image) )
$link .= $name;
else
$link .= "<img src=\'$feed_image\'$alt$title" . \' />\';
$link .= \'</a>\';
if ( empty($feed_image) )
$link .= \')\';
}
if ( !empty($show_count) )
$link .= \' (\' . intval($category->count) . \')\';
if ( \'list\' == $args[\'style\'] ) {
$output .= "\\t<li";
$class = \'cat-item cat-item-\' . $category->term_id;
// YOUR CUSTOM CLASS
if ($depth)
$class .= \' sub-\'.sanitize_title_with_dashes($category->name);
if ( !empty($current_category) ) {
$_current_category = get_term( $current_category, $category->taxonomy );
if ( $category->term_id == $current_category )
$class .= \' current-cat\';
elseif ( $category->term_id == $_current_category->parent )
$class .= \' current-cat-parent\';
}
$output .= \' class="\' . $class . \'"\';
$output .= ">$link\\n";
} else {
$output .= "\\t$link<br />\\n";
}
} // function start_el
} // class Custom_Walker_Category
然后,在中更改代码
category.php
像这样:
if (is_category()) {
$this_category = get_category($cat);
if (\'\' != get_category_children($this_category->cat_ID)) {
echo \'<ul>\';
$args = array(
\'orderby\' => \'id\',
\'show_count\' => 0,
\'title_li\' => \'\',
\'use_desc_for_title\' => 1,
\'child_of\' => $this_category->cat_ID,
\'walker\' => new Custom_Walker_Category(),
);
wp_list_categories($args);
echo \'</ul>\';
}
}