web-dev-qa-db-ja.com

カスタム分類子の子用語の最上位用語(最上位オブジェクト)を取得する方法

分類学用語の最上位用語(トップレベルの先祖)を取得する必要があります。

次のような用語の階層があるとします。

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

「New York」のIDを知っていれば、「North America」という用語のIDを取得する必要があります。

私はGoogleを検索した後stackexchangeと他のいくつかの場所で見つかった適応関数を使用しています。

しかし、私のテーマでこの関数を使用している間、提供された$ term_idと$ taxonomyが正しい場合でも、whileループは何らかの理由で無限ループになります。 Wordpressをデバッグモードにしても問題の追跡には役に立ちませんでした。関数内のwhileループを削除すると、Wordpressは正常に機能するように復元します(それ以外の場合は、無限ループの出力中にハングします)。しかし、それ以外に分類法用語の最上位の親を取得する方法は他にありません。

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

私はこの関数があなたが探しているものであると思います - > get_ancestors()

4
Joshua Abenazer