3 способа узнать текущую категорию в WordPress

В зависимости от ситуации, существует 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($categoryas$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($categoryas$cat){

echo$cat->term_id;

echo$cat->name;

}

?>

Вместо category можно указать post_tag и тогда мы получим список данных о метках(тегах) поста.