Функция 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(), она помогает легко управлять контентом и контролировать отображение записей в зависимости от их терминов.