term_is_ancestor_of

The timeline below displays how wordpress function term_is_ancestor_of has changed across different WordPress versions. If a version is not listed, refer to the next available version below.

WordPress Version: 6.1

/**
 * Checks if a term is an ancestor of another term.
 *
 * You can use either an ID or the term object for both parameters.
 *
 * @since 3.4.0
 *
 * @param int|object $term1    ID or object to check if this is the parent term.
 * @param int|object $term2    The child term.
 * @param string     $taxonomy Taxonomy name that $term1 and `$term2` belong to.
 * @return bool Whether `$term2` is a child of `$term1`.
 */
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);
}

WordPress Version: 5.5

/**
 * Check if a term is an ancestor of another term.
 *
 * You can use either an ID or the term object for both parameters.
 *
 * @since 3.4.0
 *
 * @param int|object $term1    ID or object to check if this is the parent term.
 * @param int|object $term2    The child term.
 * @param string     $taxonomy Taxonomy name that $term1 and `$term2` belong to.
 * @return bool Whether `$term2` is a child of `$term1`.
 */
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);
}

WordPress Version: 5.3

/**
 * Check if a term is an ancestor of another term.
 *
 * You can use either an id or the term object for both parameters.
 *
 * @since 3.4.0
 *
 * @param int|object $term1    ID or object to check if this is the parent term.
 * @param int|object $term2    The child term.
 * @param string     $taxonomy Taxonomy name that $term1 and `$term2` belong to.
 * @return bool Whether `$term2` is a child of `$term1`.
 */
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);
}

WordPress Version: 4.3

/**
 * Check if a term is an ancestor of another term.
 *
 * You can use either an id or the term object for both parameters.
 *
 * @since 3.4.0
 *
 * @param int|object $term1    ID or object to check if this is the parent term.
 * @param int|object $term2    The child term.
 * @param string     $taxonomy Taxonomy name that $term1 and `$term2` belong to.
 * @return bool Whether `$term2` is a child of `$term1`.
 */
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);
}

WordPress Version: 3.7

/**
 * Check if a term is an ancestor of another term.
 *
 * You can use either an id or the term object for both parameters.
 *
 * @since 3.4.0
 *
 * @param int|object $term1 ID or object to check if this is the parent term.
 * @param int|object $term2 The child term.
 * @param string $taxonomy Taxonomy name that $term1 and $term2 belong to.
 * @return bool Whether $term2 is child of $term1
 */
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);
}