_get_term_hierarchy example


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 ( $child_of ) {
            $_parent = $child_of;
        } elseif ( $parent ) {
            $_parent = $parent;
        } else {
            $_parent = false;
        }

        if ( $_parent ) {
            $in_hierarchy = false;
            foreach ( $taxonomies as $_tax ) {
                $hierarchy = _get_term_hierarchy( $_tax );

                if ( isset( $hierarchy[ $_parent ] ) ) {
                    $in_hierarchy = true;
                }
            }

            if ( ! $in_hierarchy ) {
                if ( 'count' === $args['fields'] ) {
                    return 0;
                } else {
                    $this->terms = array();
                    
$active_object               = '';
    $active_ancestor_item_ids    = array();
    $active_parent_item_ids      = array();
    $active_parent_object_ids    = array();
    $possible_taxonomy_ancestors = array();
    $possible_object_parents     = array();
    $home_page_id                = (int) get_option( 'page_for_posts' );

    if ( $wp_query->is_singular && ! empty( $queried_object->post_type ) && ! is_post_type_hierarchical( $queried_object->post_type ) ) {
        foreach ( (array) get_object_taxonomies( $queried_object->post_type ) as $taxonomy ) {
            if ( is_taxonomy_hierarchical( $taxonomy ) ) {
                $term_hierarchy = _get_term_hierarchy( $taxonomy );
                $terms          = wp_get_object_terms( $queried_object_id$taxonomy, array( 'fields' => 'ids' ) );
                if ( is_array( $terms ) ) {
                    $possible_object_parents = array_merge( $possible_object_parents$terms );
                    $term_to_ancestor        = array();
                    foreach ( (array) $term_hierarchy as $anc => $descs ) {
                        foreach ( (array) $descs as $desc ) {
                            $term_to_ancestor[ $desc ] = $anc;
                        }
                    }

                    foreach ( $terms as $desc ) {
                        
if ( empty( $this->items ) || ! is_array( $this->items ) ) {
            echo '<tr class="no-items"><td class="colspanchange" colspan="' . $this->get_column_count() . '">';
            $this->no_items();
            echo '</td></tr>';
            return;
        }

        if ( is_taxonomy_hierarchical( $taxonomy ) && ! isset( $this->callback_args['orderby'] ) ) {
            if ( ! empty( $this->callback_args['search'] ) ) {// Ignore children on searches.                 $children = array();
            } else {
                $children = _get_term_hierarchy( $taxonomy );
            }

            /* * Some funky recursion to get the job done (paging & parents mainly) is contained within. * Skip it for non-hierarchical taxonomies for performance sake. */
            $this->_rows( $taxonomy$this->items, $children$offset$number$count );
        } else {
            foreach ( $this->items as $term ) {
                $this->single_row( $term );
            }
        }
Home | Imprint | This part of the site doesn't use cookies.