get_term_children() WP 2.3.0

Отримує всі дочірні елементи вказаного елемента таксономії (категорії) як масиву.

Ця функція об’єднає всі рівні дочірніх розділів на один масив, тобто. якщо ми вказали елемент таксономії 10, у якого є дочірній елемент 15, а в нього, у свою чергу, є розділ 20, то функція збере в єдиний масив дані про елементи таксономії 15 і 20.

Функцію логічно використовувати лише таксономій деревоподібного типу.

Це рекурсивна (викликає сама себе) функція, яка тільки збирає дані, а ID термінів отримує _get_term_hierarchy() .

Працює на основі:
_get_term_hierarchy()
1 раз – 0.000048 сек
(дуже швидко) | 50000 разів – 0.75 сек
(дуже швидко) |
PHP 7.0.5, WP 4.5.2

Хуків немає.

Повертає

Массив|WP_Error. Масив ID дочірніх елементів таксономії або WP_Error об’єкт, у разі помилки.

Використання

$ terms = get_term_children ($ term, $ taxonomy);
$term
(число) (обов’язковий)
ID терміна, всі дочірні розділи якого потрібно отримати.
$taxonomy
(рядок) (обов’язковий)
Назва таксономії з якою працюватиме функція.

Приклади

0

#1 Базове використання

Виведемо ul списком на екран назви дочірніх розділів елемента таксономії 10 у вигляді посилань на відповідні сторінки архівів:

$ term_id = 10; // get_queried_object()->term_id; - ID поточної рубрики (динамічно)
$tax_name = 'products';
$ term_childs = get_term_children ($ term_id, $ tax_name);

echo '<ul>';
foreach ( $term_childs as $child ) {

	$term = get_term_by( 'id', $child, $tax_name );

	echo '<li><a href="' . get_term_link( $term ) . '">' . esc_html($term->name). '</a></li>';
}

echo '</ul>';

В результаті виконання цього коду, на екрані ми отримаємо щось подібне:

<ul>
	<li><a href="http://example.com">Назва терміна 1</a></li>
	<li><a href="http://example.com">Назва терміна 2</a></li>
</ul>

список змін

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

Код get_term_children() WP 6.0.2

function get_term_children( $term_id, $taxonomy ) {
	if ( ! taxonomy_exists( $taxonomy ) ) {
		return new WP_Error( 'invalid_taxonomy', __( 'Invalid taxonomy.' ) );
	}

	$term_id = (int) $term_id;

	$terms = _get_term_hierarchy($taxonomy);

	if ( ! isset( $terms[ $term_id ] ) ) {
		return array();
	}

	$children = $terms[$term_id];

	foreach ((array) $terms[ $term_id ] as $child ) {
		if ( $term_id === $child ) {
			continue;
		}

		if ( isset( $terms[ $child ] ) ) {
			$ Children = array_merge ($ Children, get_term_children ($ Child, $ Taxonomy));
		}
	}

	return $children;
}

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

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