我的主题使用下面的代码按类别进行样式设置,该代码将当前类别的slug作为CSS类插入。
<div class="CategorySpecificStyle
<?php $category = get_the_category(); echo $category[0]->slug; ?>">
<?php echo $category[0]->cat_name; ?>
</div>
现在我要添加大量新的子类别,在CSS中添加它们似乎很愚蠢,因为我应该能够选择当前帖子的父类别并将样式应用到该类别。
我已经能够获取父类别的名称:
$parentcat = get_cat_name($category[0]->category_parent);
但空格(和大写)是一个问题。。。而且我似乎无法获得父类别的slug。
我知道我可能错过了一个简单的步骤,但任何见解都将不胜感激。
最合适的回答,由SO网友:Rachel Baker 整理而成
您需要使用返回的ID值$category[0]->category_parent
然后把它传过去get_term()
. 示例:
$category = get_the_category();
$category_parent_id = $category[0]->category_parent;
if ( $category_parent_id != 0 ) {
$category_parent = get_term( $category_parent_id, \'category\' );
$css_slug = $category_parent->slug;
} else {
$css_slug = $category[0]->slug;
}
SO网友:s_ha_dum
您需要查询父类别数据。get_category
基本上就是为了做到这一点。
$category = get_the_category();
$parent = get_category($category[0]->category_parent);
echo $parent->slug;
这将返回类别的直接父级。这是给定的一组类别:
卡通狗Scooby如果你给它“Scooby”的ID,上面的代码将返回“Dog”。如果您想要最顶层的父类别——“卡通”,无论嵌套有多深,都可以使用以下内容:
$category = get_the_category();
$parent = get_ancestors($category[0]->term_id,\'category\');
if (empty($parent)) {
$parent[] = array($category[0]->term_id);
}
$parent = array_pop($parent);
$parent = get_category($parent);
if (!is_wp_error($parent)) {
var_dump($parent);
} else {
echo $parent->get_error_message();
}
这还具有相对整洁的错误处理的优点。