問題描述

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