Функция has_term()
в WordPress позволяет проверить, имеет ли пост один или несколько заданных терминов (например, метки, категории или другие термины в рамках любой таксономии). Это полезная функция, когда нужно определить принадлежность поста к определенным меткам или категориям, или проверить термины в произвольной таксономии.
has_term( string|int|array $term = '', string $taxonomy = '', int|WP_Post $post = null ): bool
Параметры
- $term(необязательный)
Имя термина, ID термина, слаг термина или массив таких значений для проверки. Если параметр не указан, проверяется наличие любых терминов у поста.- Типы данных:
string
(имя термина или слаг),int
(ID термина),array
(массив значений). - По умолчанию: пустая строка
''
.
- Типы данных:
- $taxonomy(необязательный)
Имя таксономии, в которой проверяется наличие термина. Если параметр не указан, проверяется наличие термина в любой таксономии.- Тип данных:
string
(имя таксономии). - По умолчанию: пустая строка
''
.
- Тип данных:
- $post(необязательный)
ID поста или объект записиWP_Post
, для которой нужно проверить наличие термина. Если не указано, используется текущий пост.- Тип данных:
int
(ID поста),WP_Post
(объект поста). - По умолчанию:
null
.
- Тип данных:
Возвращаемое значение
- bool — Возвращает
true
, если пост имеет хотя бы один из заданных терминов в указанной таксономии, илиfalse
в противном случае.
Описание
Функция сравнивает переданные термины с терминами поста в указанной таксономии по ID термина, имени или слагу. Если термины указаны в виде чисел, то проверка будет происходить только по ID термина. Если ни один термин не указан, функция проверяет, есть ли у поста хотя бы один термин в заданной таксономии.
Если вам нужно проверять термины в категории или метках, вместо этой функции можно использовать специализированные функции: has_category()
для рубрик и has_tag()
для меток.
Пример 1: Проверка наличия любого термина в таксономии genre
Допустим, нам нужно проверить, присвоен ли текущему посту какой-либо термин в пользовательской таксономии genre
:
if ( has_term( '', 'genre' ) ) {
echo 'Запись имеет хотя бы один термин в таксономии genre.';
}
Результат: Если пост имеет хотя бы один термин в таксономии genre
, выводится сообщение.
Пример 2: Проверка наличия меток (таксономия post_tag
)
В этом примере проверяется, имеет ли текущий пост какие-либо метки (которые по умолчанию принадлежат таксономии post_tag
):
if ( has_term( '', 'post_tag' ) ) {
echo 'У текущей записи есть метки.';
}
Результат: Если у поста есть хотя бы одна метка, выводится сообщение.
Пример 3: Проверка наличия определённого термина в таксономии
Проверим, присвоен ли текущей записи термин с именем документальный
, принадлежащий таксономии film_genre
:
if ( has_term( 'документальный', 'film_genre' ) ) {
echo 'Запись имеет термин "документальный" в таксономии "film_genre".';
}
Результат: Если пост имеет термин "документальный"
в таксономии film_genre
, выводится сообщение.
Пример 4: Проверка наличия термина по ID
Здесь проверяется, находится ли пост с ID 78
в термине с ID 12
, который принадлежит таксономии genre
:
if ( has_term( 12, 'genre', 78 ) ) {
echo 'Запись с ID=78 имеет термин с ID=12 в таксономии "genre".';
}
Результат: Если пост с ID 78
имеет термин с ID 12
в таксономии genre
, выводится сообщение.
Пример 5: Проверка наличия нескольких терминов
Предположим, мы хотим проверить, принадлежит ли пост с ID 103
к терминам комедия
или драма
в пользовательской таксономии movie_genre
:
if ( has_term( array( 'комедия', 'драма' ), 'movie_genre', 103 ) ) {
echo 'Запись с ID=103 имеет термин "комедия" или "драма" в таксономии "movie_genre".';
}
Результат: Если пост с ID 103
принадлежит хотя бы к одному из этих терминов, выводится сообщение.
Пример 6: Проверка наличия любого термина у поста
Для проверки, есть ли у поста любые термины в любой таксономии:
if ( has_term() ) {
echo 'У поста есть термины.';
} else {
echo 'У поста нет терминов.';
}
Заключение
Функция has_term()
предоставляет гибкий способ проверять наличие терминов у поста в WordPress. Она поддерживает проверку как по ID термина, так и по имени или слагу, а также позволяет работать с произвольными таксономиями. В комбинации с другими функциями WordPress, такими как has_category()
и has_tag()
, она помогает легко управлять контентом и контролировать отображение записей в зависимости от их терминов.