获取Wordpress / Timber中的当前类别slug

时间:2016-06-27 08:16:48

标签: php wordpress twig timber

在我的Single.php我试图获取当前帖子类别slug:

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

但它没有任何回报。这个帖子肯定是一个类别。我做错了什么?

3 个答案:

答案 0 :(得分:4)

您可以使用get_the_category(),但由于您使用TwigTimber标记了您的问题,我想也许您想要以“Timber方式”执行此操作。

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

single.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()的方法来获取类别分类的一个或所有术语,但它们似乎现已弃用

single.twig

在Twig文件中,您可以通过

轻松访问slug
{{ category.slug }}

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

{% for category in post.terms('category') %}
    {{ category.slug }}
{% endfor %}

答案 1 :(得分:0)

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

vs 2013

答案 2 :(得分:0)

您可以使用:

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

并在您的twig文件中:

{{ category.title }}