get_term_children( int $term_id, string $taxonomy ): array|WP_Error
Merges all term children into a single array of their IDs.
Description
This recursive function will merge all of the children of $term into the same array of term IDs. Only useful for taxonomies which are hierarchical.
Will return an empty array if $term does not exist in $taxonomy.
Parameters
-
$term_id
int Required -
ID of term to get children.
-
$taxonomy
string Required -
Taxonomy name.
Return
array|WP_Error List of term IDs. WP_Error returned if $taxonomy
does not exist.
Source
File: wp-includes/taxonomy.php
.
View all references
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;
}
Changelog
Version | Description |
---|---|
2.3.0 | Introduced. |
User Contributed Notes
You must log in before being able to contribute a note or feedback.
A Basic Example
Used to get an array of children taxonomies and write them out with links in an unordered list.
This would return something like.
Categories and Tags are the two pre-defined Taxonomies. The Taxonomy Name, the second required parameter $taxonomy, is ‘category’ for Categories and ‘post_tag’ for Tags.
If replacing the deprecated function get_category_children(), which returns a String, note that get_term_children() returns an array of Category IDs if the second parameter $taxonomy is ‘category’.
If the term exists in the taxonomy, but has no children, the term ID will be returned instead.