wp_get_object_terms()
Получает термины (элементы таксономии) связанные с переданным объектом(ами) (записями) в указанной таксономии.
Эта функция является ядром функции get_the_terms(). В большинстве случаев лучше использовать get_the_terms() вместо этой функции, потому что там результат кэшируется и потенциально может сэкономить много дополнительных запросов.
Это особенно полезно, если вы перебираете результаты постов в цикле, потому что WP_Query{} по умолчанию загружает все термины для запрашиваемых постов.
Заметка: этой функции можно передать несколько постов и несколько названий таксономий, чтобы получить все данные сразу, а get_the_terms() работает с одним постом и одной таксономией.
Хуки из функции
Возвращает
WP_Term[]|int[]|Строку[]|Строку|WP_Error
.
Массив объектов
содержащих информацию о терминах. При ошибке вернет объект WP_Error.array()
- если элементы не найдены.WP_Error
- если указанной таксономии не существует.
Использование
wp_get_object_terms( $object_ids, $taxonomies, $args );
- $object_ids(строка/массив) (обязательный)
- ID объектов, термины которых нужно получить. Более одного ID нужно указывать в массиве: array(23, 56, 89).
- $taxonomies(строка/массив) (обязательный)
- Название таксономии термины которой нужно получить. Можно указать несколько названий. Несколько названий нужно передавать через массив: array('category', 'name2').
- $args(строка/массив)
Аргументы, в соответствии с которыми будет получен результат. Можно указывать в виде строки запроса.
С версии WP 4.7, можно указывать все параметры функции get_terms()
По умолчанию: предустановки
-
orderby(строка)
По какому критерию сортировать результат. Может быть:name
- по имени. По умолчанию.count
- по количеству записей.slug
- по ярлыку.term_group
-term_order
-none
- выводить без сортировки.
По умолчанию: 'name'
-
order(строка)
Направление сортировки.ASC
— по порядку,DESC
— в обратном порядке.
По умолчанию: 'ASC' -
fields(строка)
Какие поля включать в результирующий массив. Может быть:all
- в результате мы получи массив объектов со всей информацией о каждом термине.ids
- получить только ID терминов.names
- получить только имена терминов.slugs
- получит только ярлыки терминов.all_with_object_id
- тоже что и all, плюс еще и ID терминов.tt_ids
- вернет ID таксономий терминов (внутренний ID для связи таблиц).
Также возможны комбинированные варианты, например:
id=>name
- вернёт пару ID => Имя.id=>slug
- вернёт пару ID => Ярлык.
По умолчанию: 'all'
-
meta_query(массив)
Параметры мета запроса. Смотрите WP_Meta_Query{}. С версии 4.4. - update_term_meta_cache(логический)
Нужно ли обновить кэш метаданных полученных элементов таксономии. С версии 4.4.
По умолчанию: false (до WP 6.3 был true)
-
Примеры
#1 Все элементы таксономии 'productcategories' поста
Получим термины таксономии productcategories текущего поста ($post->ID):
$productcategories = wp_get_object_terms( $post->ID, 'productcategories' );
#2 Вернет список элементов таксономии "product", которые установлены для записи:
$product_terms = wp_get_object_terms( $post->ID, 'product' ); if( $product_terms && ! is_wp_error( $product_terms ) ){ $lis = []; foreach( $product_terms as $term ){ $lis[] = '<li><a href="'. get_term_link( $term ) .'">'. $term->name .'</a></li>'; } echo '<ul>'. implode( "\n", $lis ) .'</ul>'; }
#3 Получает самый верхний элемент таксономии для указанного или текущего поста в цикле
Смотрите в третьем примере в описании функции get_the_terms()
Список изменений
С версии 2.3.0 | Введена. |
С версии 4.2.0 | Added support for 'taxonomy', 'parent', and 'term_taxonomy_id' values of $orderby. Introduced $parent argument. |
С версии 4.4.0 | Introduced $meta_query and $update_term_meta_cache arguments. When $fields is 'all' or 'all_with_object_id', an array of WP_Term objects will be returned. |
С версии 4.7.0 | Refactored to use WP_Term_Query, and to support any WP_Term_Query arguments. |
С версии 6.3.0 | Passing update_term_meta_cache argument value false by default resulting in get_terms() to not prime the term meta cache. |