1

在我Single.php的尝试中,我正在尝试获取当前帖子类别的信息:

$category = get_category(get_query_var('cat'));
$cat_slug = $category->slug;

但它不返回任何东西。帖子上肯定有一个类别。我究竟做错了什么?

4

3 回答 3

4

您可以使用,但是由于您使用andget_the_category()标记了您的问题,我想也许您想使用“木材方式”。TwigTimber

使用 Timber,您可以通过对象上的方法访问许多功能。对于 TimberPost 类,有一个方法terms(),它将为您获取帖子的所有术语。传递您想要获取术语的分类的名称。在你的情况下:category

单.php

<?php

$context = Timber::get_context();
$post = Timber::get_post();

$context['post'] = $post;

// Get all categories assigned to post
$categories = $post->terms( 'category' );

// Get only the first category from the array
$context['category'] = reset( $categories );

Timber::render( 'single.twig', $context );

在 Timber 1.x 以下的版本中,还有类似category()和的方法categories()来获取类别分类的一个或所有术语,但它们现在似乎已被弃用

单枝

在您的 Twig 文件中,您可以轻松地通过

{{ category.slug }}

您也可以直接terms()从 Twig 调用该方法并将结果传递给 for 循环。这将回显分配给帖子的所有类别。

{% for category in post.terms('category') %}
    {{ category.slug }}
{% endfor %}
于 2016-06-27T21:56:39.053 回答
1

您可以尝试使用此代码来解决您的问题:

foreach (get_the_category() as $category) {
    echo $category->slug .' ';
} 
于 2016-06-27T08:56:36.673 回答
0

您可以使用:

$context[ 'category' ] = Timber::get_term(['taxonomy'=>'category']);

在你的树枝文件中:

{{ category.title }}
于 2017-10-01T14:35:04.643 回答