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