wp_get_object_terms()
Отримує терміни (елементи таксономії) пов’язані з переданим об’єктом (записами) у зазначеній таксономії.
Ця функція є ядром функції get_the_terms() . У більшості випадків краще використовувати get_the_terms() замість цієї функції, тому що результат кешується і потенційно може заощадити багато додаткових запитів.
Це особливо корисно, якщо ви перебираєте результати постів у циклі, тому що WP_Query{} за замовчуванням завантажує всі терміни для постів, що запитуються.
Примітка: цією функцією можна передати кілька постів та кілька назв таксономій, щоб отримати всі дані відразу, а get_the_terms() працює з одним постом та однією таксономією.
get_terms()
get_the_taxonomies() ,
wp_get_post_categories() ,
is_object_in_term() ,
wp_get_post_terms() ,
get_the_terms()
(дуже повільно) | 50000 разів – 8.64 сек
(швидко) |
PHP 7.1.2, WP 4.8
Хуки з функції
Повертає
WP_Term[]|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.
За замовчуванням: ‘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’ значення $ orderby . Introduced $parent argument. |
З версії 4.4.0 | Introduced $meta_query and $update_term_meta_cache arguments. Якщо $fields є ‘ all’ або ‘ all_with_object_id ‘ , array of WP_Term objects will be returned. |
З версії 4.7.0 | Зосереджена на використанні WP_Term_Query, і на підтримку будь-яких WP_Term_Query arguments. |