问题描述
如何获取模板中的 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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。