term_is_ancestor_of()
Перевіряє, чи другий термін є дочірнім до першого (перевіряються всі рівні вкладеності). Умовний тег.
Поверне true якщо вказаний у першому параметрі термін є батьківським по відношенню до другого. Перевірятимуться всі рівні вкладеності.
нотатки
Функція спрацює, якщо другий термін буде дочірнім до першого;
Результат true буде повернуто навіть якщо $term2 вкладена в $term1 через кілька термінів (багаторівнева перевірка вкладеності);
- Параметр, що передається, повинен бути або числом або об’єктом. Якщо рядок передано у вигляді числа, то функція поверне false.
cat_is_ancestor_of()
(швидко) | 50000 разів – 0.87 сек
(дуже швидко) |
PHP 7.0.14, WP 4.7
Хуків немає.
Повертає
true|false
.
- true – коли $term1 споріднений термін до терміну $term2.
- false – коли не споріднений.
Використання
if( term_is_ancestor_of( $term1, $term2, $taxonomy ) ){ // є залежність }
-
$term1
(число/об’єкт) (обов’язковий) - ID або об’єкт, який має бути батьківським терміном.
-
$term2
(число/об’єкт) (обов’язковий) - Дочірній термін.
-
$taxonomy
(рядок) (обов’язковий) - Назва таксономії яким належать зазначені у $term1 та $term2 терміни.
Приклади
#1 Перевірка спорідненості елемента таксономії
Припустимо, що у нас є користувальницька деревоподібна таксономія my_tax
і в ній термін з ID 5 є дочірнім до терміну з ID 1. Тоді ця умова буде справедливою:
if( term_is_ancestor_of( 1, 5, 'my_tax') ){ echo 'Термін 4 - це дочірній термін до терміна 1'; }
#2 Контент для всієї гілки термінів
Цей приклад корисний, потрібно вивести певний контент для всієї гілки термінів. Тобто коли потрібно вивести контент для будь-яких дочірніх термінів до зазначеного і для зазначеного терміну (ID=4).
Код нижче перевіряє чи використовується термін Music (ID 4) з таксономії Sound і якщо це цей термін або будь-який його дочірній, то виводиться меню, за допомогою функції wp_nav_menu() :
<?php // $term - це поточний термін, що переглядається. // Його можна отримати так, якщо потрібно: // $term = get_term_by( 'slug', get_query_var('term'), 'sound'); if (term_is_ancestor_of(4, $term, 'sound') or is_term(4, 'sound')){ ?> <div id="music_subnav_menu" class="subnav_menu"> <?php wp_nav_menu( array('menu' => 'Music' )); ?> </div> <? } ?>
список змін
З версії 3.4.0 | Введено. |
Код term_is_ancestor_of() term is ancestor of WP 6.0.2
function term_is_ancestor_of( $term1, $term2, $taxonomy ) { if ( ! isset( $term1->term_id ) ) { $ term1 = get_term ($ term1, $ taxonomy); } if ( ! isset( $term2->parent ) ) { $ term2 = get_term ($ term2, $ taxonomy); } if ( empty( $term1->term_id ) || empty( $term2->parent ) ) { return false; } if ( $term2->parent === $term1->term_id ) { return true; } return term_is_ancestor_of( $term1, get_term( $term2->parent, $taxonomy ), $taxonomy ); }