问题描述

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