wpseek.com
A WordPress-centric search engine for devs and theme authors
_get_term_children is private and should not be used in themes or plugins directly.
_get_term_children › WordPress Function
Since2.3.0
Deprecatedn/a
› _get_term_children ( $term_id, $terms, $taxonomy, $ancestors = array() )
Access: |
|
Parameters: (4) |
|
Returns: |
|
Defined at: |
|
Codex: |
Gets the subset of $terms that are descendants of $term_id.
If$terms
is an array of objects, then _get_term_children() returns an array of objects.
If $terms
is an array of IDs, then _get_term_children() returns an array of IDs.Related Functions: get_term_children, get_category_children, get_children, get_page_children, get_term_field
Source
function _get_term_children( $term_id, $terms, $taxonomy, &$ancestors = array() ) { $empty_array = array(); if ( empty( $terms ) ) { return $empty_array; } $term_id = (int) $term_id; $term_list = array(); $has_children = _get_term_hierarchy( $taxonomy ); if ( $term_id && ! isset( $has_children[ $term_id ] ) ) { return $empty_array; } // Include the term itself in the ancestors array, so we can properly detect when a loop has occurred. if ( empty( $ancestors ) ) { $ancestors[ $term_id ] = 1; } foreach ( (array) $terms as $term ) { $use_id = false; if ( ! is_object( $term ) ) { $term = get_term( $term, $taxonomy ); if ( is_wp_error( $term ) ) { return $term; } $use_id = true; } // Don't recurse if we've already identified the term as a child - this indicates a loop. if ( isset( $ancestors[ $term->term_id ] ) ) { continue; } if ( (int) $term->parent === $term_id ) { if ( $use_id ) { $term_list[] = $term->term_id; } else { $term_list[] = $term; } if ( ! isset( $has_children[ $term->term_id ] ) ) { continue; } $ancestors[ $term->term_id ] = 1; $children = _get_term_children( $term->term_id, $terms, $taxonomy, $ancestors ); if ( $children ) { $term_list = array_merge( $term_list, $children ); } } } return $term_list; }