get_term_by()
Отримує зазначений термін (елемент таксономії) за: ім’ям (назвою), ярликом (слагою) або за ID терміном.
Важливо: $value не очищається, коли $field=name
вам потрібно робити це самостійно.
Функція завжди повертає перший термін, що підходить під умови: $field, $value, $taxonomy
. Але коли $field=name
, то може бути кілька термінів з однаковими назвами, у такому випадку функція поверне лише перший знайдений термін, якщо потрібні всі знайдені, використовуйте get_terms() .
Використовує: sanitize_term() — чистить елемент на основі правил фільтра, вказаного в параметрі $filter .
(дуже повільно) | 50000 разів – 4.95 сек
(швидко) |
PHP 7.1.11, WP 4.9.6
Хуків немає.
Повертає
WP_Term|Массив|false
.
WP_Term|Массив
— Рядок бази даних у зазначеному форматі (масив/об’єкт). Масив або об’єкт будуть містити такі дані:stdClass Object ( [term_id] => 9 [name] => Адмінка [slug] => adminka-wordpress [term_group] => 0 [term_taxonomy_id] => 9 [taxonomy] => category [description] => [parent] => 3 [count] => 3 [filter] => raw )
Попередження: всі поля масиву повертаються як рядки, term_id у тому числі. Тому перед подальшим використанням перетворіть числові значення на числа, де це необхідно.
false
коли таксономії не існує або термін не знайдений у ній.
Використання
get_term_by($field, $value, $taxonomy, $output, $filter);
-
$field
(рядок) (обов’язковий) Поле в БД, яким буде здійснюватися пошук параметра $value , можливо:
slug
– за альтернативною назвою.name
– За назвою.term_taxonomy_id
– за ідентифікатором таксономії терміна.id
– за ідентифікатором терміна. C WP 5.5 можна ключ може бути іID
.
-
$value
(рядок/число) (обов’язковий) - Значення, яке потрібно знайти.
-
$taxonomy
(рядок) (обов’язковий) Назва таксономії, category , post_tag або назва довільної таксономії.
З версії 4.4. цей параметр не є обов’язковим, якщо в $field вказано
term_taxonomy_id
.-
$output
(рядок) Яким видом масиву повертати дані:
- OBJECT – об’єкт, що конвертує в об’єкт WP_Term .
- ARRAY_A – асоціативний масив;
- ARRAY_N – індексований масив.
Типово: OBJECT
-
$filter
(рядок) Тип фільтрації. Одне із значень:
raw
– просто поверне значенняedit
– фільтр esc_html() якщо це поле description, та фільтр esc_attr() якщо інше поле.db
slug
rss
attribute
– фільтр esc_attr()js
– фільтр esc_js()
Дивіться параметр $context у функції sanitize_term_field() . Або загляньте в код функції.
За замовчуванням: ‘raw’
Приклади
#1 Приклади як отримати терміни різних таксономій
// Отримаємо рубрику "Новини" на її ім'я: $term = get_term_by( 'name', 'Новини', 'category' ); // Отримаємо дані мітки (таксономія post_tag) // Альтернативна назва (слаг) якої metka: $term = get_term_by( 'slug', 'metka', 'post_tag'); // Отримаємо термін "Новини" з таксономії "my_custom_taxonomy" на його ім'я: $term = get_term_by( 'name', 'Новини', 'my_custom_taxonomy' ); // Отримання терміну з id (term_id) з таксономії 'category'. get_term_by( 'id', 12, 'category' )
Для отримання терміну ID краще використовувати функцію get_term() .
В результаті цих прикладів змінна $term
міститиме подібний об’єкт:
stdClass Object ( [term_id] => 80 [name] => Моя Рубрика [slug] => moya-rubrika [term_group] => 0 [term_taxonomy_id] => 87 [taxonomy] => my_tax [description] => [parent] => 0 [count] => 5 )
#2 Отримання рубрики посту
Цей приклад показує, як отримати всі дані першої рубрики посту, використовуючи get_term_by:
// отримуємо всі рубрики поточного посту $postCategories = get_the_category( $post->ID ); // збираємо дані про всі рубрики посту в $myCategories foreach ( $postCategories as $postCategory ) { $myCategories[] = get_term_by( 'id', $postCategory->cat_ID, 'category' ); } // тут $myCategories містить дані всіх рубрик посту // Першу рубрику посту можна отримати так: $myCategory = get_term_by('id', $postCategories[0]->cat_ID, 'category');
Це демонстраційний приклад. По ідеї get_the_category() повертає масив з усіма даними рубрики і, наприклад, дані перші категорії будуть у першому елементі масиву: $postCategories[0]
.
нотатки
- Дивіться: () $filter param.
список змін
З версії 2.3.0 | Введено. |
З версії 4.4.0 | $taxonomy is optional if $field is ‘term_taxonomy_id’ . Перевірено на обернути WP_Term object if $output is OBJECT . |
З версії 5.5.0 | Added ‘ID’ як alias of ‘id’ для $field parameter. |