В зависимости от ситуации, существует 3 способа с помощью которых можно узнать текущую категорию в WordPress.
- Способ 1. Через get_queried_object()
- Способ 2. Через get_the_category()
- Способ 3. Через wp_get_post_terms()
Способ 1. Через get_queried_object()
Данный способ подходит для ситуации когда мы находимся на странице категорий. Там где используется шаблон archive.php.
1 2 3 4 5 |
<?php $category = get_queried_object(); $current_cat_id = $category->term_id; $current_cat_name = $category->name; ?> |
Способ 2. Через get_the_category()
Данный способ подходит когда нам нужно узнать текущую категорию поста внутри цикла или в кастомной функции. Для этого, функции get_the_category() нужно передать ID текущего поста.
get_the_category() — Получает массив c данными о категориях поста. Работает на основе get_the_terms().
Пример 1. Получим ID и Имя первой категории поста.
1 2 3 4 5 |
<?php $category = get_the_category($post->ID); $current_cat_id = $category[0]->cat_ID; $current_cat_name = $category[0]->name; ?> |
Пример 2. Выведем ID и Имя всех категорий поста.
1 2 3 4 5 6 7 |
<?php $category = get_the_category($post->ID); foreach ($category as $cat) { echo $cat->term_id; echo $cat->name; } ?> |
Способ 3. Через get_the_terms()
Данный способ тоже самое что и второй. Разница в том что get_the_category предназначен для таксономии Рубрики (Все называют эту таксономию категории). А с помощью get_the_terms можно получить данные любой таксономии. Для этого мы передаем ID поста и название таксономии, в нашем случае это будет category.
Пример 1. Получим ID и Имя первой категории поста.
1 2 3 4 5 |
<?php $category = get_the_terms($post->ID, 'category'); $current_cat_id = $category[0]->term_id; $current_cat_name = $category[0]->name; ?> |
Пример 2. Выведем ID и Имя всех категорий поста.
1 2 3 4 5 6 7 |
<?php $category = get_the_terms($post->ID, 'category'); foreach ($category as $cat) { echo $cat->term_id; echo $cat->name; } ?> |
Вместо category можно указать post_tag и тогда мы получим список данных о метках(тегах) поста.