問題描述

如何獲取模板中的 cat ID 。非常重要:我不能用這個名字來做,因為我們有同樣的名字的混合 cat 。只有 s 子是不同的。如果我得到 s 子,那也是可以的。但是像我說的那樣:我不能使用 cat 的標題…..

最佳解決方案

$wp_query->get_queried_object()會給你 「當前查詢的物件」 。在類別檔案中,這是類別物件,在作者頁面上,這是作者,在單個帖子上,這是帖子本身,… 好吧,你得到這個想法。如果你只想要 ID,你也可以使用 $wp_query->get_queried_object_id()

次佳解決方案

嗯,我還沒有評論,但 VicePrez 的回答確實有效。以下作品在類別歸檔頁面上很好 (儘管您可能想要做的只是回聲它)

<?php
$category = get_the_category();
echo $category[0]->cat_ID;
?>

編輯:抓住它,它為我工作,直到我遇到一個沒有職位的類別,然後它拿起子類而不是主要類別。您不能依賴於類別模板頁面上的 get_the_category 。

第三種解決方案

您可以使用 get_the_category()來做到這一點。

例:

<?php

$category = get_the_category();

// use this to echo the slug
echo $category[0]->slug;

// use this to echo the cat id
echo $category[0]->cat_ID;

// if you've got multiple categories you can run a foreach loop like so
foreach ( $category as $cat ) :

    echo '<li>' . $cat->name . '</li>';

endforeach;

?>

你可以使用:

<?php
    echo '<pre>';
    print_r($category);
    echo '</pre>';
?>

檢視返回的物件陣列。

第四種方案

除非我誤解了這個問題,我想你也可以將類別 id /slug 新增到 body 類中:

<?php if(is_category()) { $cat_ID = 'cat-'.get_query_var('cat'); } ?>
<body <?php body_class($cat_ID); ?>>

第五種方案

@Jan Fabry 的回答實際上是正確的答案,這就是為什麼:由於 Wordpress 允許多個類別的帖子,使用 $category = get_the_category()和查詢 $category[0]將無法在每一種情況下工作,因為你實際在做的是要求第一個職位的第一個職位。想象一下,你有 A,B 和 C 類。如果你只有一個帖子,它有 A 和 B 類,你在 B 的類別頁面,你可能會得到 A 的資訊。

這就是為什麼最好使用 $category = $wp_query->get_queried_object(),因為在前面的例子中,當您進入 B 的類別頁面時,它總會得到 B 的資訊。

參考文獻

注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。