WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru

has_term() WP 3.1.0

Проверяет наличие у поста терминов, т.е. проверяет есть ли у поста метки/категорий/разделы (с учетом таксономии).

В качестве указания терминов, функции можно передавать в параметр $term: ID терминов, их названия или ярлыки (альтернативные названия). Переданные данные сравниваются с данными поста. Если передаются только ID, то сравниваться будут только идентификаторы (term_id).

Если не переданы никакие термины для сравнения, то функция будет проверять присвоены ли посту хоть какие-нибудь термины.

Если нужно проверить наличие меток у поста используйте аналогичную функцию has_tags(), а если рубрики (категории) - has_category().

Работает на основе: is_object_in_term()
1 раз — 0.003337 сек (очень медленно) | 50000 раз — 0.82 сек (очень быстро) | PHP 7.1.5, WP 4.8.1

Хуков нет.

Возвращает

true|false. Зависит от выполнения условия.

Использование

if( has_term( $term, $taxonomy, $post ) ){
	 ... 
}
$term(строка/массив/число)
Термины, наличие у поста которые нужно проверить. Можно указать: название, ярлык, ID или массив из этих элементов.
По умолчанию: ''
$taxonomy(строка)
Название таксономии, в которой проверять термины.
По умолчанию: ''
$post(число/объект)
Пост, наличие терминов у которого проверять. По умолчанию проверяется у текущего поста.
По умолчанию: null (global $post)

Примеры

#1. Проверим есть ли у текущей записи какие-либо термины в таксономии videos:

if( has_term('', 'video') ){
	echo "Запись имеет термины в таксономии `video`";
}

#1.2. Чтобы правильно понять предыдущий пример, его можно записать так:

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`";
}

Список изменений

С версии 3.1.0 Введена.

Код has_term() WP 5.8.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;
}

term (термины таксономий)

Условные теги (все)

Для записей

1 коммент
    Войти