has_term() WP 3.1.0

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

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

Якщо не передані жодні терміни для порівняння, то функція перевірятиме чи присвоєні посту хоч якісь терміни.

Якщо потрібно перевірити наявність міток у посту, використовуйте аналогічну функцію 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)

Приклади

0

#1 Перевіримо чи є у поточного запису якісь терміни в таксономії videos:

if( has_term('', 'video') ){
	echo "Запис має терміни у таксономії `video`";
}
0

#2 Щоб правильно зрозуміти попередній приклад, його можна записати так:

if( has_term('', 'post_tag') ){
	echo "У поточному записі є мітки";
}

Так, ми просто перевіримо, чи є у поточного запису звичайні мітки, які за умовчанням використовуються в WordPress (терміни в таксономії post_tag). Замінити цей приклад можна умовним тегом if( has_tags() ).

0

#3 Перевіримо, чи є у поточного запису термін triller, що знаходиться в таксономії video:

if( has_term('triller', 'video') ){
	echo "Запис має термін `triller` у таксономії `video`";
}
0

#4 Перевірка наявності кількох термінів

Перевіримо, чи знаходиться запис 59 у термінах comedyабо history, які відносяться до таксономії video:

if( has_term( ['comedy','history'], 'video', 59) ){
	echo "Запис з ID=59 має терміни `comedy` або `history` у таксономії `video`";
}

список змін

З версії 3.1.0Введено.

Код has_term() WP 6.0.2

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

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *