我已经解决了我的问题。我在旧代码之前添加了此定义:
<?php
// get the category object for the current category
$thisTrueCat = get_category( get_query_var( \'cat\' ) );
print $thisTrueCat->term_id;
?>
以上
$thisTrueCat
, 不同于
$thisCat
在已经存在的代码中,检索当前类别的ID,而不考虑其父类别。
$thisCat
另一方面,设置为默认返回到当前类别父级的ID。
具有$thisTrueCat
建立后,我在循环中添加了以下代码:
<li <?php if ($thisTrueCat->term_id == $category->term_id) { ?> class="xshown" <?php } ?>
如果显示的当前类别与列表项的类别匹配,则这将为列表项提供类xshown。换句话说,使用CSS,我突出显示当前显示的类别。
以下是我的新代码的全部内容:
<!-- call ID of thisTrueCat -->
<?php
// get the category object for the current category
$thisTrueCat = get_category( get_query_var( \'cat\' ) );
print $thisTrueCat->term_id; ?>
<ul class="submenu">
<!-- call submenu -->
<?php
// get the category object for the current category
$thisCat = get_category( get_query_var( \'cat\' ) );
// if not top-level, track it up the chain to find its ancestor
while ( intval($thisCat->parent) > 0 ) {
$thisCat = get_category ( $thisCat->parent );
}
//by now $thisCat will be the top-level category, proceed as before
$args=array(
\'child_of\' => $thisCat->term_id,
\'hide_empty\' => 0,
\'orderby\' => \'name\',
\'order\' => \'ASC\'
);
$categories=get_categories( $args );
foreach( $categories as $category ) { ?>
<li <?php if ($thisTrueCat->term_id == $category->term_id) { ?> class="xshown" <?php } ?>><a href="<?php echo get_category_link( $category->term_id ) ?>" ><?php echo $category->name ?></a></li>
<?php
};
?>
</ul>