it-swarm.com.de

Wie erhalte ich den obersten Term (obersten Vorfahren) eines benutzerdefinierten Taxonomie-Kinder-Terms?

Ich muss den obersten Begriff (Vorfahr der obersten Ebene) eines Taxonomiebegriffs erhalten.

Angenommen, die folgende Begriffshierarchie:

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

Ich benötige die ID des Begriffs "Nordamerika", wenn ich die ID von "New York" kenne.

Ich verwende eine angepasste Funktion, die ich nach dem Durchsuchen von Google bei stackexchange und einigen anderen Stellen gefunden habe.

Bei Verwendung dieser Funktion in meinem Design wird die while-Schleife jedoch aus irgendeinem Grund zu einer Endlosschleife, auch wenn die angegebenen Werte für $ term_id und $ taxonomy korrekt sind. Das Versetzen von Wordpress in den Debug-Modus hat mir nicht geholfen, das Problem zu ermitteln. Wenn ich die while-Schleife in der Funktion entferne, wird Wordpress wiederhergestellt, um ordnungsgemäß zu funktionieren (andernfalls bleibt es hängen, während eine Endlosschleife ausgegeben wird). Allerdings weiß ich nicht wirklich, wie ich sonst das oberste Elternteil eines Taxonomiebegriffs bekommen kann.

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

Ich denke, diese Funktion ist das, wonach Sie suchen -> get_ancestors ()

4
Joshua Abenazer