Как получить текущий термин в пользовательской таксономии WordPress?
Мне нужно отобразить текущий термин моей пользовательской таксономии в отдельной записи.
пример:
- Моя пользовательская таксономия - products, а её термины - product-1, product-2 и products-3.
- Моя запись привязана к product-2
- И я хочу вывести текущий products = products-2 в моей записи
По сути, мне нужна функция, похожая на WordPress-функцию the_category();
, но для моей таксономии, что-то вроде the_customtaxonomy();
ОБНОВЛЕНИЕ:
На самом деле мне нужно получить ID этого термина, так как я хочу показать иконку для него в single.php, например, функция наподобие the_category_ID();

Вы можете использовать get_the_term_list()
:
Описание
Возвращает HTML-строку с терминами таксономии, связанными с записью и указанной таксономией. Термины ссылаются на соответствующие страницы списка терминов.
Использование
<?php get_the_term_list( $id, $taxonomy, $before, $sep, $after ) ?>

единственная проблема с get_the_term_list заключается в том, что он оборачивает термины в html. используйте wp_get_object_terms(), чтобы получить массив терминов

спасибо за ответ от моего друга, я нашел способ показать slug моей таксономии
<?php
$terms = get_terms('my-taxonomy-name');
foreach ( $terms as $term ) {
echo $term->slug.' ';
}
?>
но этот код возвращает все термины в моей таксономии, а мне нужно возвращать только текущий термин таксономии...
ОБНОВЛЕНИЕ:
я наконец нашел это решение и добавил проверку на пустые термины - работает
<?php // Получаем термины для поста
$terms = get_the_terms( $post->ID , 'oil' );
// Перебираем массив терминов
if ( $terms != null ){
foreach( $terms as $term ) {
// Выводим slug термина (термин является объектом)
print $term->slug ;
// Удаляем остальные данные из объекта, так как они не нужны
unset($term);
} } ?>

Я нашел это:
<?php
// вывод списка терминов заданной таксономии с помощью wp_list_categories (также полезно в качестве виджета при использовании плагина PHP Code)
$taxonomy = 'genre';
$orderby = 'name';
$show_count = 0; // 1 - да, 0 - нет
$pad_counts = 0; // 1 - да, 0 - нет
$hierarchical = 1; // 1 - да, 0 - нет
$title = '';
$args = array(
'taxonomy' => $taxonomy,
'orderby' => $orderby,
'show_count' => $show_count,
'pad_counts' => $pad_counts,
'hierarchical' => $hierarchical,
'title_li' => $title
);
?>
<ul>
<?php wp_list_categories( $args ); ?>
</ul>
Этот код получает все термины в моей пользовательской таксономии, а мне нужно получить текущий термин.

Вам необходимо использовать wp_get_object_terms()
wp_get_object_terms( $object_ids, $taxonomies, $args )
- $object_ids: строка или массив идентификаторов объектов, для которых нужно получить термины
- $taxonomies: строка или массив таксономий

Взяв код пользователя user3208, я добавил немного кода, который добавляет URL к термину. Надеюсь, это кому-то поможет.
<?php // Получаем термины для записи
$terms = get_the_terms( $post->ID , 'oil' );
// Перебираем каждый элемент, так как это массив
if ( $terms != null ){
foreach( $terms as $term ) {
$term_link = get_term_link( $term, 'oil' );
// Выводим название и URL
echo '<a href="' . $term_link . '">' . $term->name . '</a>';
// Удаляем остальные данные, хранящиеся в объекте, так как они не нужны
unset($term); } } ?>

Небольшое обновление по теме, так как этот вопросуже около 11 лет, и никто об этом не упомянул.
Вы можете использовать get_query_var()
.
Извлекает значение переменной запроса в классе WP_Query. для получения текущего термина, по которому выполняется запрос на странице таксономии.
Вместо выполнения дополнительного запроса, мы просто получаем термин из текущего. Затем мы можем вывести его на фронтенде.
<?= get_query_var( 'term' ); ?>
