web-dev-qa-db-fra.com

Comment obtenir le terme le plus haut (le plus ancêtre) d'un terme enfant taxonomie personnalisée?

Je dois obtenir le terme le plus haut (ancêtre de niveau supérieur) d'un terme de taxonomie.

Supposons la hiérarchie de termes suivante:

    North America
        United States
            New York
                New York City
    South America
         Mexico

Je dois obtenir l'identifiant du terme "Amérique du Nord" si je connais l'identifiant de "New York"

J'utilise une fonction adaptée trouvée sur stackexchange et quelques autres endroits après une recherche sur Google.

Cependant, lors de l'utilisation de cette fonction dans mon thème, la boucle while apparaît dans une boucle infinie pour une raison quelconque, même si les variables $ term_id et $ taxonomy fournies sont correctes. Mettre Wordpress en mode débogage ne m'a pas aidé à identifier le problème. Si je supprime la boucle while de la fonction, Wordpress rétablit son fonctionnement correct (sinon, il se bloque lors de la sortie d'une boucle infinie). Cependant, je ne sais pas vraiment comment sinon je pourrais obtenir le plus haut parent d'un terme de taxonomie autrement.

function get_term_top_most_parent( $term_id, $taxonomy ) {

        $child = get_term_by( 'id', $term_id, $taxonomy );

        if ( $child ) {

            $parent = get_term_by( 'id', $child->term_id, $taxonomy );
            $parent = $parent->parent;

            if ( $parent ) {

                while ( $parent != 0 ) :

                    $parent = get_term_by( 'id', $parent, $taxonomy );
                    $parent = $parent->parent;

                endwhile;

            }

            else { 

                    $parent = $child->term_id; 

            }

            return $parent;

        }

}
1
unfulvio

Je suppose que cette fonction correspond à ce que vous recherchez -> get_ancestors ()

4
Joshua Abenazer