最上位のカテゴリを取得(カテゴリ名から)

//最上位のカテゴリを取得(カテゴリ名から)
function get_term_ancestor_by_term ( $sbjcat = ”, $tax_name = ‘category’ ) {

// [$sbjcat = カテゴリIDまたはスラッグ],
// [$tax_name = タクソノミ名]

if ( empty( $sbjcat ) && is_category() ) {

$sbjcat = get_query_var( ‘cat’ ); //カテゴリページ

} elseif ( empty( $sbjcat ) && is_tax() ) {

$sbjcat = get_query_var( ‘term_id’ );
$tax_name = get_query_var(‘taxonomy’); //カスタムタクソノミページ

} elseif ( !is_numeric( $sbjcat ) ) {

$sbjcat = get_term_by( ‘slug’, $sbjcat, $tax_name )->term_id; //スラッグからIDを取得

}

if ( !$sbjcat ) return false; //カテゴリ取得不可

$ancestors = array_reverse( get_ancestors( $sbjcat , $tax_name ) );

if( isset( $ancestors[0] ) ) $ancestor_id = $ancestors[0]; else $ancestor_id = $sbjcat;

return get_term( $ancestor_id , $tax_name );

}