如何获取自定义分类子术语的最高术语(最高祖先)?

时间:2012-08-28 作者:unfulvio

我需要获取分类术语的最顶层术语(顶级祖先)。

假设以下术语层次结构:

    North America
        United States
            New York
                New York City
    South America
         Mexico
如果我知道“纽约”的ID,我需要获得“北美”术语的ID

在搜索Google之后,我正在使用stackexchange和其他一些地方找到的一个经过调整的功能。

然而,在我的主题中使用此函数时,由于某种原因,while循环变成了无限循环,即使提供的$term\\u id和$taxonomy是正确的。将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 个回复
最合适的回答,由SO网友:Joshua Abenazer 整理而成

我想这个函数就是您想要的->get_ancestors()

结束

相关推荐

WP_SET_OBJECT_TERMS是否创建与修订的关系?

我有一个自定义的帖子类型“albums”。它是一种分类法,“album\\u artist”。我试图通过编程将艺术家添加到该分类法中,在一个连接到save\\u post的函数中使用wp\\u set\\u object\\u术语。function get_album_data($post_id) { // CODE REMOVED FOR BREVITY: IMPORT DATA FROM EXTERNAL SOURCE, PARSE VARS wp_set_object