has_term()
Перевіряє наявність у посту термінів, тобто. перевіряє чи має пост мітки/категорій/розділи (з урахуванням таксономії).
Як зазначення термінів, функції можна передавати до параметра $term
: ID термінів, їх назви або ярлики (альтернативні назви). Передані дані порівнюються з даними посту. Якщо передаються лише ID, то порівнюватимуть лише ідентифікатори ( term_id ).
Якщо не передані жодні терміни для порівняння, то функція перевірятиме чи присвоєні посту хоч якісь терміни.
Якщо потрібно перевірити наявність міток у посту, використовуйте аналогічну функцію has_category() .
is_object_in_term()
(дуже повільно) | 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`"; }
#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.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; }