Функция get_term_by()
в WordPress позволяет получить данные термина по определённому полю, такому как имя, слаг или ID. Это полезно для работы с терминами таксономий, когда необходимо извлечь информацию о конкретном термине.
get_term_by( string $field, string|int $value, string $taxonomy = '', string $output = OBJECT, string $filter = 'raw' ): WP_Term|array|false
Параметры
- $field (обязательный): Поле, по которому будет производиться поиск. Возможные значения:
'slug'
— по слагу термина.'name'
— по имени термина.'term_id'
или'id'
— по ID термина.'term_taxonomy_id'
— по ID таксономии термина.
- $value (обязательный): Значение, по которому будет производиться поиск термина.
- $taxonomy (необязательный): Название таксономии. Необязателен, если
$field
—'term_taxonomy_id'
. - $output (необязательный): Указывает, в каком формате возвращать данные. Возможные значения:
OBJECT
— объект WP_Term.ARRAY_A
— ассоциативный массив.ARRAY_N
— индексированный массив. По умолчанию:OBJECT
.
- $filter (необязательный): Как обрабатывать данные. По умолчанию:
'raw'
.
Возвращаемое значение
Функция возвращает объект WP_Term
, массив или false
:
WP_Term
— если термин найден.array
— если запрашивается ассоциативный или индексированный массив.false
— если таксономия не существует или термин не найден.
Пример 1: Получение термина по имени
// Получаем рубрику "Новости" по её имени
$term = get_term_by('name', 'Новости', 'category');
if ($term) {
echo 'ID термина: ' . $term->term_id;
echo 'Слаг термина: ' . $term->slug;
} else {
echo 'Термин не найден.';
}
Пример 2: Получение термина по слагу
// Получаем термин по слагу
$term = get_term_by('slug', 'metka', 'post_tag');
if ($term) {
echo 'ID термина: ' . $term->term_id;
echo 'Название термина: ' . $term->name;
} else {
echo 'Термин не найден.';
}
Пример 3: Получение термина по ID
// Получаем термин по ID
$term = get_term_by('id', 123, 'category');
if ($term) {
echo 'Название термина: ' . $term->name;
} else {
echo 'Термин не найден.';
}
Пример 4: Получение термина из произвольной таксономии
// Получаем термин из произвольной таксономии "my_custom_taxonomy"
$term = get_term_by('name', 'Моя Рубрика', 'my_custom_taxonomy');
if ($term) {
echo 'Слаг термина: ' . $term->slug;
} else {
echo 'Термин не найден.';
}
Пример 5: Получение всех данных о рубриках поста
// Получаем все рубрики текущего поста
$postCategories = get_the_category($post->ID);
// Собираем данные о всех рубриках поста
$myCategories = [];
foreach ($postCategories as $postCategory) {
$myCategories[] = get_term_by('id', $postCategory->cat_ID, 'category');
}
// Получаем первую рубрику поста
$myCategory = get_term_by('id', $postCategories[0]->cat_ID, 'category');
if ($myCategory) {
echo 'Первая рубрика: ' . $myCategory->name;
}
Важные замечания
- Если вы используете функцию
get_term_by()
для поиска термина по имени, будьте внимательны, так как могут существовать несколько терминов с одинаковым именем. В таком случае функция вернёт только первый найденный термин. - Если вам нужно получить все термины, которые соответствуют определённым критериям, используйте функцию
get_terms()
вместоget_term_by()
.
Заключение
Функция get_term_by()
является мощным инструментом для работы с терминами таксономий в WordPress. Она позволяет быстро извлекать информацию о терминах по различным полям, что упрощает разработку и управление контентом на вашем сайте.