Отображение текущего термина таксономии внутри произвольного типа записи
Это должно быть довольно просто, однако я не смог найти ответ нигде в интернете. Все найденные ответы были близки, но не совсем то, что мне нужно. Мне нужно отобразить только текущий термин произвольного типа записи, в котором я нахожусь. не все термины, а только один! (релевантный)
Вот что я использую, но это отображает ВСЕ термины, что мне не подходит:
<?php
$taxonomy = 'genre';
$queried_term = get_query_var($taxonomy);
$terms = get_terms($taxonomy, 'slug='.$queried_term);
if ($terms) {
foreach($terms as $term) {
echo $term->name;
}
}
?>
помните - я хотел бы отобразить это в шаблоне моего отдельного типа записи кто-нибудь может подсказать? спасибо
Отлично, я наконец-то нашел то, что мне нужно здесь: Как получить текущий термин в моей пользовательской таксономии в WordPress?
Последнее обновление внизу предоставлено @user3208:
<?php // Получаем термины для записи
$terms = get_the_terms( $post->ID , 'oil' );
// Перебираем каждый элемент, так как это массив
if ( $terms != null ){
foreach( $terms as $term ) {
// Выводим свойство slug из объекта $term
print $term->slug ;
// Удаляем остальные данные, хранящиеся в объекте, так как они не нужны
unset($term);
} } ?>
Это решило мою проблему! Спасибо
Вместо этого следует использовать wp_get_post_terms.
$terms = wp_get_post_terms( $post_id, $taxonomy, $args );
get_terms вернет все термины из указанной таксономии.
ОБНОВЛЕНИЕ:
global $post;
$terms = wp_get_post_terms( $post->ID, 'genre');
print_r($terms); #выводит результат
Я пытаюсь, но это не работает. Нужно ли передавать какие-то переменные в функцию? Можете уточнить, как именно мне следует реализовать это в моём коде? Спасибо.
gil hamer
Если вы находитесь внутри WordPress Loop, вы можете использовать get_the_ID() вместо $post_id. Для $taxonomy вам нужно указать название используемой таксономии. $args не является обязательным параметром.
RRikesh
Это определённо вне цикла! Просто не получается заставить это работать.. Можете подсказать, как реализовать это вне цикла? Если нужно, я могу опубликовать весь код. Спасибо.
gil hamer
Затем вам нужно добавить global $post; и использовать $post->ID для получения ID записи.
RRikesh
Можете показать пример с использованием моего кода выше? Я не так силён в программировании. Буду признателен. Спасибо.
gil hamer
Взяв код пользователя 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); } } ?>
Ответы, содержащие только код, обычно не приветствуются без пояснений. Не могли бы вы отредактировать свой ответ и объяснить, что делает эта функция и как она решает исходную проблему, возможно, сославшись на The Codex для получения дополнительной информации?
Howdy_McGee