get_term_by()
Получает указанный термин (элемент таксономии) по: имени (названию), ярлыку (слагу) или по ID термина.
Важно: $value не очищается, когда $field=name, вам нужно делать это самостоятельно.
Функция всегда возвращает первый термин, который подходит под условия: $field, $value, $taxonomy. Но когда $field=name, то может быть несколько терминов с одинаковыми названиями, в таком случае функция вернет только первый найденный термин, если нужны все найденные, то используйте функцию get_terms().
Использует: sanitize_term() — чистит элемент на основе правил фильтра указанного в параметре $filter.
Хуков нет.
Возвращает
WP_Term|Массив|false.
-
WP_Term|Массив— Строку базы данных в указанном формате (массив/объект). Массив или объект будут содержать следующие данные:object(WP_Term) { ["term_id"] => int(134) ["name"] => string(4) "AJAX" ["slug"] => string(4) "ajax" ["term_group"] => int(0) ["term_taxonomy_id"] => int(134) ["taxonomy"] => string(8) "post_tag" ["description"] => string(0) "" ["parent"] => int(0) ["count"] => int(4) ["filter"] => string(3) "raw" ["term_order"] => string(1) "0" } 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() если другое поле.dbslugrssattribute- фильтр 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].
Заметки
- Смотрите: sanitize_term_field() The
$contextparam lists the available values for get_term_by()$filterparam.
Список изменений
| С версии 2.3.0 | Введена. |
| С версии 4.4.0 | $taxonomy is optional if $field is 'term_taxonomy_id'. Converted to return a WP_Term object if $output is OBJECT. |
| С версии 5.5.0 | Added 'ID' as an alias of 'id' for the $field parameter. |