Получить слаг в текущей категории в WordPress / Timber

В моем Single.php Я пытаюсь получить текущие сообщения категории слизняков:

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

Но это ничего не возвращает. И определенно есть категория на почте. Что я делаю неправильно?

0

Решение

Вы можете пойти с get_the_category(), но так как вы пометили свой вопрос Twig а также 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 вы можете легко получить доступ к слагу через

{{ category.slug }}

Вы также можете напрямую позвонить terms() метод из Twig и передать результат в цикл for. Это выведет на экран все категории, назначенные посту.

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

Другие решения

Вы можете попробовать этот код, чтобы решить вашу проблему:

foreach (get_the_category() as $category) {
echo $category->slug .' ';
}
0

Ты можешь использовать:

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

и в вашем файле ветки:

{{ category.title }}
0
По вопросам рекламы [email protected]