Отображение текущего термина таксономии внутри произвольного типа записи

1 мар. 2013 г., 13:43:30
Просмотры: 102K
Голосов: 8

Это должно быть довольно просто, однако я не смог найти ответ нигде в интернете. Все найденные ответы были близки, но не совсем то, что мне нужно. Мне нужно отобразить только текущий термин произвольного типа записи, в котором я нахожусь. не все термины, а только один! (релевантный)

Вот что я использую, но это отображает ВСЕ термины, что мне не подходит:

<?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;
  }
}
?>

помните - я хотел бы отобразить это в шаблоне моего отдельного типа записи кто-нибудь может подсказать? спасибо

0
Все ответы на вопрос 4
0
17

Отлично, я наконец-то нашел то, что мне нужно здесь: Как получить текущий термин в моей пользовательской таксономии в WordPress?

Последнее обновление внизу предоставлено @user3208:

<?php   // Получаем термины для записи
 $terms = get_the_terms( $post->ID , 'oil' );
 // Перебираем каждый элемент, так как это массив
 if ( $terms != null ){
 foreach( $terms as $term ) {
 // Выводим свойство slug из объекта $term
 print $term->slug ;
 // Удаляем остальные данные, хранящиеся в объекте, так как они не нужны
 unset($term);
} } ?>

Это решило мою проблему! Спасибо

2 мар. 2013 г. 10:11:44
8

Вместо этого следует использовать 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); #выводит результат
1 мар. 2013 г. 14:20:38
Комментарии

Я пытаюсь, но это не работает. Нужно ли передавать какие-то переменные в функцию? Можете уточнить, как именно мне следует реализовать это в моём коде? Спасибо.

gil hamer gil hamer
1 мар. 2013 г. 14:46:08

Если вы находитесь внутри WordPress Loop, вы можете использовать get_the_ID() вместо $post_id. Для $taxonomy вам нужно указать название используемой таксономии. $args не является обязательным параметром.

RRikesh RRikesh
1 мар. 2013 г. 18:14:06

Это определённо вне цикла! Просто не получается заставить это работать.. Можете подсказать, как реализовать это вне цикла? Если нужно, я могу опубликовать весь код. Спасибо.

gil hamer gil hamer
1 мар. 2013 г. 18:28:18

Затем вам нужно добавить global $post; и использовать $post->ID для получения ID записи.

RRikesh RRikesh
1 мар. 2013 г. 18:32:32

Можете показать пример с использованием моего кода выше? Я не так силён в программировании. Буду признателен. Спасибо.

gil hamer gil hamer
1 мар. 2013 г. 18:35:59

Обновил ответ.

RRikesh RRikesh
1 мар. 2013 г. 19:12:03

К сожалению, это не сработало: 1. Выводится только арт

gil hamer gil hamer
1 мар. 2013 г. 22:11:25

Извините, но у меня не получилось: 1. Выводится ошибка с ненужным массивом (вероятно, вы не можете игнорировать параметр '$arg'). 2. Не меняется название термина при отображении поста из другого термина. Есть другие решения? Спасибо

gil hamer gil hamer
1 мар. 2013 г. 23:36:38
Показать остальные 3 комментариев
0

Взяв код пользователя 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); } } ?>
28 окт. 2016 г. 14:50:15
1
<?php echo get_the_term_list( $post->ID, 'yourtaxonomy', '', ', ' ); ?>
10 июл. 2017 г. 02:23:02
Комментарии

Ответы, содержащие только код, обычно не приветствуются без пояснений. Не могли бы вы отредактировать свой ответ и объяснить, что делает эта функция и как она решает исходную проблему, возможно, сославшись на The Codex для получения дополнительной информации?

Howdy_McGee Howdy_McGee
10 июл. 2017 г. 03:27:34