問題描述
我的主題根據類別使用以下程式碼,將當前類別的外掛作為 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。