wordpress 获取分类的顶级父类

// determine the topmost parent of a term
function get_term_top_most_parent($term_id, $taxonomy){
    // start from the current term
    $parent  = get_term_by( 'id', $term_id, $taxonomy);
    // climb up the hierarchy until we reach a term with parent = '0'
    while ($parent->parent != '0'){
        $term_id = $parent->parent;

        $parent  = get_term_by( 'id', $term_id, $taxonomy);
    }
    return $parent;
}

// so once you have this function you can just loop over the results returned by wp_get_object_terms

function hey_top_parents($taxonomy, $results = 1) {
    // get terms for current post
    $terms = wp_get_object_terms( get_the_ID(), $taxonomy );
    // set vars
    $top_parent_terms = array();
    foreach ( $terms as $term ) {
        //get top level parent
        $top_parent = get_term_top_most_parent( $term->term_id, $taxonomy );
        //check if you have it in your array to only add it once
        if ( !in_array( $top_parent, $top_parent_terms ) ) {
            $top_parent_terms[] = $top_parent;
        }
    }
    // build output (the HTML is up to you)


    foreach ( $top_parent_terms as $term ) {

          $r = '<ul>';
          $r .= '<li><a href="'. get_term_link( $term->slug, $taxonomy ) . '">' . $term->name . '</a></li>';
    }
          $r .= '</ul>';

    // return the results
    return $r;

}

第一个函数(get_term_top_most_parent)接受一个分类ID和分类 ​​,并返回分类的顶级父类(或本身); 

第二功能(hey_top_parents)工作在循环中,以及,给定的分类法,返回后的分类顶层祖先。


或者以下方法:

$cat_tree = get_category_parents($term_id, FALSE, ':', TRUE);
$top_cat = explode(':',$cat_tree);
$catParentSlug = $top_cat[0];


你可能感兴趣的:(wordpress 获取分类的顶级父类)