问题描述
我的主题根据类别使用以下代码,将当前类别的插件作为 CSS 类插入。
<div class="CategorySpecificStyle
<?php $category = get_the_category(); echo $category[0]->slug; ?>">
<?php echo $category[0]->cat_name; ?>
</div>
现在我要添加大量新的 sub-categories,而且当我能够选择当前帖子的父类别并应用样式时,它们全部添加到 CSS 中似乎很愚蠢。
我已经能够得到父类别的名称:
$parentcat = get_cat_name($category[0]->category_parent);
但空格 (和大小写) 是一个问题… 我似乎无法得到父类别的 s 。。
我知道我可能在某处失去了一个简单的步骤,但任何见解都将不胜感激。
最佳解决方案
您将需要使用 $category[0]->category_parent
返回的 ID 值,并通过 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;
}
次佳解决方案
您将需要查询父类别数据。 get_category
几乎是为了做到这一点。
$category = get_the_category();
$parent = get_category($category[0]->category_parent);
echo $parent->slug;
这将返回类别的直系父母。这是一组类别:
-
动画片
-
狗
-
史酷比
-
-
如果您给它”Scooby” 的 ID,上述代码将返回”Dog” 。如果你想要最顶层的父类 – “Cartoon”– 无论嵌套深度多大,使用这样的东西:
$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();
}
这也具有相对整齐的错误处理的优点。
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。