get_the_terms() WP 2.5.0
Получает элементы таксономии (термины), которые относятся к указанному посту (записи).
Эта функция может быть использована внутри Цикла WordPress. Или ей нужно передать ID поста, элементы таксономии которого нужно получить.
Функция полностью идентична wp_get_object_terms( $id, $taxonomy ). Разница в том, что эта функция работает с кэшем и тут есть фильтр get_the_terms.
Хуки из функции
Возвращает
Массив/false/WP_Error.
- Массив WP_Terms объектов (терминов).
- false, если элементы не найдены или указанной записи не существует.
- WP_Error в остальных случаях.
Использование
get_the_terms( $id, $taxonomy );
- $id(число/WP_Post) (обязательный)
- ID или объект записи, термины (элементы таксономии) которой нужно получить.
- $taxonomy(строка) (обязательный)
- Название таксономии, термины которой нужно получить.
Примеры
#1. Выведем ссылки на элементы таксономии 'my_tax', относящиеся к посту 10
$cur_terms = get_the_terms( 10, 'my_tax' ); if( is_array( $cur_terms ) ){ foreach( $cur_terms as $cur_term ){ echo '<a href="'. get_term_link( $cur_term->term_id, $cur_term->taxonomy ) .'">'. $cur_term->name .'</a>,'; } }
Тоже самое можно сделать внутри Цикла WordPress:
Для каждого поста будут выведены связанные термины (как метки). Для этого укажем ID поста динамически ($post->ID):
$cur_terms = get_the_terms( $post->ID, 'my_tax' ); if( is_array( $cur_terms ) ){ foreach( $cur_terms as $cur_term ){ echo '<a href="'. get_term_link( $cur_term->term_id, $cur_term->taxonomy ) .'">'. $cur_term->name .'</a>,'; } }
#2. Получим только первый термин
Допустим, мы получили термины записи и нам нужно взять данные только одного термина (элемента таксономии). Но функция возвращает массив объектов (терминов). Пример ниже показывает как вытащить первый термин из массива.
$terms = get_the_terms( $post->ID, 'my_tax' ); if( $terms ){ $term = array_shift( $terms ); // теперь можно можно вывести название термина echo $term->name; }
#3. Получает термин верхнего уровня, для указанного или текущего поста в цикле
Это отдельная функция на базе get_the_terms()
/** * Получает термин верхнего уровня, для указанного или текущего поста в цикле. * * @param string $taxonomy Название таксономии * @param int/object $post_id ID или объект поста * * @return string/wp_error Объект термина или false */ function get_top_term( $taxonomy, $post_id = 0 ){ if( isset($post_id->ID) ) $post_id = $post_id->ID; if( ! $post_id ) $post_id = get_the_ID(); $terms = get_the_terms( $post_id, $taxonomy ); if( ! $terms || is_wp_error($terms) ) return $terms; // только первый $term = array_shift( $terms ); // найдем ТОП $parent_id = $term->parent; while( $parent_id ){ $term = get_term_by( 'id', $parent_id, $term->taxonomy ); $parent_id = $term->parent; } return $term; }
Использование:
$top_term = get_top_term( 'category' ); echo $top_term->name;
Список изменений
С версии 2.5.0 | Введена. |
Код get_the_terms() get the terms WP 5.6
Cвязанные функции
Из метки: term (термины таксономий)
- get_term()
- get_term_by()
- get_term_children()
- get_term_field()
- get_term_link()
- get_terms()
- get_the_term_list()
- has_term()
Еще из раздела: Для записей
- get_object_taxonomies()
- get_objects_in_term()
- get_the_category()
- get_the_category_list()
- get_the_tag_list()
- get_the_tags()
- get_the_taxonomies()