WEB -
Переключить навигацию

Язык

  • Русский

Введите не менее 3 символов для поиска.

  • Русский

Поиск

Введите не менее 3 символов для поиска.

Книги
  • Книги
  • JavaScript
  • HTML и CSS
  • Без категории
  • Другие темы
  • SEO
  • WordPress
  • Дизайн
  • PHP
  • Laravel
  • React js
  • Python
  • SQL и языки запросов
  • Android
  • Yii PHP framework
  • Статьи
  • Laravel
  • WordPress
  • Темы WordPress
  • Интернет магазин
  • JavaScript
  • © 2015-2026 Andrii Beznosko

  • Our partner

Как получить текущую таксономию у WordPress с помощью get_term_by()

  • Описание
  • Описание/Скачать

Как получить текущую таксономию в WordPress с помощью get_term_by()

В WordPress таксономии (например, категории или метки) часто используются для фильтрации контента и построения страниц архивов. Чтобы в шаблоне получить «текущую» таксономию (термин) — например, по slug из URL — удобно использовать функцию get_term_by(). Она возвращает объект WP_Term, из которого можно достать нужные свойства: имя, slug, описание и другие параметры.

Базовый пример: получение термина из текущего запроса

Предположим, у вас есть страница таксономии, и WordPress передаёт параметры через get_query_var(). Тогда получить термин можно так:

<?php
$taxonomy = get_term_by(
    'slug',
    get_query_var('term'),
    get_query_var('taxonomy')
);
?>

Переменная $taxonomy будет содержать объект вида WP_Term. Пример структуры:

WP_Term Object
(
    [term_id] => 11
    [name] => Обувь
    [slug] => vzuttya
    [term_group] => 0
    [term_taxonomy_id] => 11
    [taxonomy] => wpsc_product_category
    [description] => Обувь на все случаи жизни
    [parent] => 0
    [count] => 17
    [filter] => raw
)

Как вывести свойства термина

Так как возвращается объект, свойства доступны через ->. Например:

<?php
if ( ! empty($taxonomy) && ! is_wp_error($taxonomy) ) {
    echo '<strong>Имя:</strong> ' . esc_html($taxonomy->name) . '<br>';
    echo '<strong>Slug:</strong> ' . esc_html($taxonomy->slug) . '<br>';
    echo '<strong>Описание:</strong> ' . esc_html($taxonomy->description);
}
?>

Важно: всегда проверяйте, что термин действительно найден, и используйте экранирование (например, esc_html()) перед выводом.

Сигнатура функции get_term_by()

Функция принимает несколько параметров:

get_term_by( $field, $value, $taxonomy, $output, $filter );
  • $field (строка, обязательно) — по какому полю искать термин в базе.
  • $value (строка/число, обязательно) — значение, которое нужно найти.
  • $taxonomy (строка) — название таксономии (например, category, post_tag или ваша произвольная).
  • $output (строка) — формат возвращаемых данных: OBJECT, ARRAY_A, ARRAY_N.
  • $filter (строка) — тип фильтрации (по умолчанию raw).

По каким полям можно искать термин

В $field можно передать один из вариантов:

  • slug — поиск по slug (удобно для URL).
  • name — поиск по названию.
  • term_taxonomy_id — поиск по идентификатору связки термина и таксономии.
  • id — поиск по ID термина.

Пример: поиск по id (часто самый надёжный вариант)

Если у вас есть ID термина (например, из метаданных или из предыдущего запроса), лучше искать по id:

<?php
$term_id = 11;
$taxonomy_name = 'wpsc_product_category';

$term = get_term_by('id', $term_id, $taxonomy_name);

if ( $term && ! is_wp_error($term) ) {
    echo '<h4>' . esc_html($term->name) . '</h4>';
}
?>

Так вы избегаете неоднозначностей, которые иногда возникают при поиске по name.

Параметр $output: объект или массив

По умолчанию функция возвращает объект (OBJECT). Но можно вернуть массив:

  • OBJECT — объект WP_Term.
  • ARRAY_A — ассоциативный массив.
  • ARRAY_N — индексированный массив.

Пример с ARRAY_A:

<?php
$term = get_term_by(
    'slug',
    get_query_var('term'),
    get_query_var('taxonomy'),
    'ARRAY_A'
);

if ( ! empty($term) ) {
    echo '<strong>Имя:</strong> ' . esc_html($term['name']);
    echo '<br><strong>Slug:</strong> ' . esc_html($term['slug']);
}
?>

Параметр $filter: как WordPress обработает поля

По умолчанию используется raw, то есть данные возвращаются без дополнительной фильтрации. Возможные варианты:

  • raw — просто возвращает значение.
  • edit — применяет esc_html() для description и esc_attr() для остальных полей.
  • db
  • slug
  • rss
  • attribute
  • js

На практике чаще всего достаточно raw, а экранирование делайте перед выводом в шаблоне.

Когда лучше использовать get_term() вместо get_term_by()

Есть важный нюанс: если вы ищете термин по id, результат обычно получается быстрее и предсказуемее. Кроме того, get_term() использует объектный кэш всегда, а get_term_by() при поиске не по ID может обращаться к базе напрямую, даже если кэш существует.

Если у вас есть возможность — используйте get_term() или передавайте в get_term_by() $field = 'id'.

Полный пример для шаблона: вывод заголовка и описания текущей таксономии

Ниже пример, который можно вставлять в шаблон (например, archive.php или шаблон таксономии). Он аккуратно обрабатывает ситуацию, когда термин не найден:

<?php
$taxonomy_slug = get_query_var('taxonomy');
$term_slug = get_query_var('term');

$term = get_term_by('slug', $term_slug, $taxonomy_slug);

if ( $term && ! is_wp_error($term) ) {
    echo '<div class="list-group">';
    echo '<div class="list-group-item">';
    echo '<h4>' . esc_html($term->name) . '</h4>';
    echo '</div>';

    if ( ! empty($term->description) ) {
        echo '<div class="list-group-item">';
        echo '<div>' . wp_kses_post($term->description) . '</div>';
        echo '</div>';
    }

    echo '</div>';
} else {
    echo '<p>Термин не найден.</p>';
}
?>

Итоги

Чтобы получить текущую таксономию в WordPress, используйте get_term_by() и извлекайте данные из объекта WP_Term. Практические рекомендации простые:

  • Ищите по slug, если данные берутся из URL.
  • Ищите по id, если ID доступен — это надёжнее.
  • Проверяйте результат на пустоту и is_wp_error().
  • Экранируйте вывод (например, esc_html() или wp_kses_post() для описаний).

Если хотите, могу адаптировать пример под конкретную таксономию (например, category, post_tag или вашу кастомную) и под ваш шаблон (archive.php, single.php, кастомный page template).

Комментарии

Всего комментариев: 0

Оставить комментарий Отменить ответ

Ваш email не будет опубликован.

Категория: Главная » Статьи » Wordpress » Как получить текущую таксономию у WordPress с помощью get_term_by()
Статус: For beginners
Ссылка на оригинальную статью (если указана или статья не является нашей) Скачать
Добавил Сен 28, 2017 14:25 Andriy

Статьи, опубликованные на WEB-Программист, сопровождаются ссылками на источники. Администрация сайта не несёт ответственности за использование этих материалов.

Смотрите также:

4 способа задать цикл loop WordPress

Здравствуй, дорогой читатель! Сегодня хочу продолжить пополнять копилку разработчика WordPress и познакомлю Вас с четырьмя способами задания главного цикла WordPress, получил он название в народе loop. Циклом называется, потому что это запрос к базе данных на наличе постов/записей в определенной...

Вся правда о functions.php

Вся правда о functions.php Файл functions.php в WordPress давно окружён мифами. Для одних это главное место, куда можно складывать любой кастомный код темы, для других — опасный файл, после редактирования которого сайт легко получить в белый экран. На самом деле...

Миниатюры в WordPress. Как добавить поддержку миниатюр в WordPress и настроить их отображение

Миниатюры в WordPress. Как добавить поддержку миниатюр в WordPress и настроить их отображение Миниатюры в WordPress, которые также часто называют featured image или изображением записи, — это один из базовых элементов оформления современной темы. Именно они чаще всего выводятся в...

При обновлении темы сохранить ключи и счетчики для Yandex, Google и. т. д

Часто при ре дизайне темы для Wordpress сталкиваются с такой проблемой что в header.php старой темы били meta-ключи для yandex, google и. т. д, а в footer.php били счетчики. Если это делает профессиональный разработчик, то он обязательно перенесет эти данные,...

При обновлении просит FTP доступ WordPress

Часто при установке плагинов на свой сайт (особенно на localhost) Wordpress прости дать ФТП доступ Это часто раздражает. Что б решить проблему нужно открыть проект и в корне найти файл wp-config.php  Тут в месте после строк /** Схема сопоставления. Не меняйте,...

Связаться с нами

- Премиум темы и плагины WP Star бесплатно -

Поддержать автора

Настройки cookie

Мы используем необязательные аналитические cookie, чтобы понимать, какие материалы полезны. Вы можете продолжить без аналитики.

Вы можете изменить свой выбор в любое время.