get_term() — позволяет получить всю информацию о конкретном элементе таксономии (рубрике)

Владислав Белецкий
Владислав Белецкий .
Категория:
Комментариев: 0

Сейчас я не буду объяснять что такое таксономии, их элементы (на некоторых блогах их называют терминами, хотя я честно говоря не вижу связи между словами «рубрика» и «термин», ну да ладно, неважно).

В двух словах — в каждой таксономии есть свои элементы, например рубрики и метки — это элементы таксономий category и post_tag. Какой-нибудь плагин интернет-магазина, который вы установили, может создавать таксономию категорий товаров, например product_category.

При работе с таксономиями эта функция на самом деле невероятно полезная, ее кстати также можно с уверенностью использовать и для обычных рубрик и меток.

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

get_term( $term, $taxonomy, $output = OBJECT, $filter = 'raw' )
$term
(целое число|объект) если целое число (передан ID элемента), тогда функция будет вытаскивать информацию из базы данных, если передан объект элемента таксономии, к нему просто применятся фильтры get_term and term_$taxonomy.
$taxonomy
(строка) название таксономии, например category или product_cat, или какое оно там у вас.
$output
(строка) формат возвращаемых данных, может принимать значения:

  • OBJECT — объект,
  • ARRAY_A — ассоциативный массив вида ключ->значение,
  • ARRAY_N — нумерованный массив;
$filter
(строка) вид фильтра WordPress, по умолчанию фильтр не применяется (мне одному непонятен смысл этого предложения? =D если кто-то в курсе про эти фильтры, отпишитесь плиз в комментах, буду очень благодарен, пытался в коде как-то сам разобраться что это такое, но не вышло, в буржунете тоже никакой инфы про них).

Примеры

Получение названия элемента таксономии по его ID

Во всех последующих примерах буду использовать элемент таксономии product_category (тут может быть любая ваш таксономия, либо вовсе — рубрики или метки) с ID 555 (опять-таки, скорее всего вы будете передавать ID в функцию не напрямую, а через переменную и другие функции, в данном случае это просто для примера).

$term = get_term( 555, 'product_category');
$term_name = $term->name; // получаем название конкретной категории товаров (в данном случае)

Выводим описание элемента таксономии, заданное в админке

Вообще, тут уже есть отдельная функция для вывода описания term_description(), но для простоты кода, можно сразу вытащить всё это добро из объекта (если вы уже воспользовались функцией get_term() и объект имеется у вас на руках).

$term = get_term( 555, 'product_category');
 
echo "<h1>{$term->name}</h1>";
echo "<p>{$term->description}</p>";

Выводим ссылку на страницу категории (элемента таксономии)

Как ни странно, в возвращаемом объекте содержится всё, кроме ссылки на страницу с архивами рубрики. Конечно, там есть ярлык, однако его недостаточно для правильного построения ссылки, к счастью есть отличная функция, которая позволяет выводить нормальную ссылку вне зависимости от настроек постоянных ссылок и прочей ерунды — get_term_link().

В принципе все примеры там уже приведены и всё же вот ещё один:

$term = get_term( 555, 'product_category');
echo '<a href="' . get_tem_link( $term ) . '">' . $term->name . '</a>';

У функции get_term_link() есть некоторые свои особенности, но в двух словах — в качестве параметра лучше всего передавать весь объект и не париться.

Все остальные параметры возвращаемого объекта уже перечислены в этом посту (ссылка с якорем — сразу перекинет на параметры).

Получение результата в виде ассоциативного массива

Тут на самом деле всё просто, возьмем второй пример например и переделаем его:

$term = get_term( 555, 'product_category', ARRAY_A);
 
echo "<h1>{$term['name']}</h1>";
echo "<p>{$term['description']}</p>";

Результат в виде нумерованного массива

Этот вариант лично мне кажется мягко говоря не удобным, но всё же покажу и его. Опять тот же самый пример:

$term = get_term( 555, 'product_category', ARRAY_N);
 
echo "<h1>{$term[1]}</h1>"; // название
echo "<p>{$term[7]}</p>"; // описание

Как узнать необходимые индексы? Ну, можно взглянуть на массив через PHP-функцию print_r():

print_r( $term );
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии