has_term()
Проверяет наличие у поста терминов, т.е. проверяет есть ли у поста метки/категорий/разделы (с учетом таксономии).
В качестве указания терминов, функции можно передавать в параметр $term
: ID терминов, их названия или ярлыки (альтернативные названия). Переданные данные сравниваются с данными поста. Если передаются только ID, то сравниваться будут только идентификаторы (term_id).
Если не переданы никакие термины для сравнения, то функция будет проверять присвоены ли посту хоть какие-нибудь термины.
Если нужно проверить наличие меток у поста используйте аналогичную функцию has_tags(), а если рубрики (категории) - has_category().
Хуков нет.
Возвращает
true|false
. Зависит от выполнения условия.
Использование
if( has_term( $term, $taxonomy, $post ) ){ ... }
- $term(строка/массив/число)
- Термины, наличие у поста которые нужно проверить. Можно указать: название, ярлык, ID или массив из этих элементов.
По умолчанию: '' - $taxonomy(строка)
- Название таксономии, в которой проверять термины.
По умолчанию: '' - $post(число/объект)
- Пост, наличие терминов у которого проверять. По умолчанию проверяется у текущего поста.
По умолчанию: null (global $post)
Примеры
#1 Проверим есть ли у текущей записи какие-либо термины в таксономии videos:
if( has_term('', 'video') ){ echo "Запись имеет термины в таксономии `video`"; }
#2 Чтобы правильно понять предыдущий пример, его можно записать так:
if( has_term('', 'post_tag') ){ echo "У текущей записи есть метки"; }
Так, мы просто проверим есть ли у текущей записи обычные метки, которые по умолчанию используются в WordPress (термины в таксономии post_tag). Заменить этот пример можно условным тегом if( has_tags() )
.
#3 Проверим есть ли у текущей записи термин triller
, который находится в таксономии video
:
if( has_term('triller', 'video') ){ echo "Запись имеет термин `triller` в таксономии `video`"; }
#4 Проверка наличия нескольких терминов
Проверим, находится ли запись 59 в терминах comedy
или history
, которые относятся к таксономии video
:
if( has_term( ['comedy','history'], 'video', 59) ){ echo "Запись с ID=59 имеет термины `comedy` или `history` в таксономии `video`"; }
Список изменений
С версии 3.1.0 | Введена. |
Код has_term() has term WP 6.4.3
function has_term( $term = '', $taxonomy = '', $post = null ) { $post = get_post( $post ); if ( ! $post ) { return false; } $r = is_object_in_term( $post->ID, $taxonomy, $term ); if ( is_wp_error( $r ) ) { return false; } return $r; }