Index: wp-includes/category-template.php
===================================================================
--- wp-includes/category-template.php	(revision 30399)
+++ wp-includes/category-template.php	(working copy)
@@ -40,26 +40,7 @@
  * @return string|WP_Error A list of category parents on success, WP_Error on failure.
  */
 function get_category_parents( $id, $link = false, $separator = '/', $nicename = false, $visited = array() ) {
-	$chain = '';
-	$parent = get_term( $id, 'category' );
-	if ( is_wp_error( $parent ) )
-		return $parent;
-
-	if ( $nicename )
-		$name = $parent->slug;
-	else
-		$name = $parent->name;
-
-	if ( $parent->parent && ( $parent->parent != $parent->term_id ) && !in_array( $parent->parent, $visited ) ) {
-		$visited[] = $parent->parent;
-		$chain .= get_category_parents( $parent->parent, $link, $separator, $nicename, $visited );
-	}
-
-	if ( $link )
-		$chain .= '<a href="' . esc_url( get_category_link( $parent->term_id ) ) . '">'.$name.'</a>' . $separator;
-	else
-		$chain .= $name.$separator;
-	return $chain;
+	return get_term_parents( $id, $link, $separator, $nicename, $visited, 'category' );
 }
 
 /**
@@ -1403,3 +1384,48 @@
 
 	return $r;
 }
+
+/**
+ * Retrieve term parents with separator.
+ *
+ * @since 4.1.0
+ *
+ * @param int $id Taxonomy term ID.
+ * @param bool $link Optional, default is false. Whether to format with link.
+ * @param string $separator Optional, default is '/'. How to separate categories.
+ * @param bool $nicename Optional, default is false. Whether to use nice name for display.
+ * @param array $visited Optional. Already linked to categories to prevent duplicates.
+ * @param string $taxonomy Optional, default is 'category'. Which taxonomy that the term belongs to.
+ * @return string|WP_Error A list of category parents on success, WP_Error on failure.
+ */
+function get_term_parents( $id, $link = false, $separator = '/', $nicename = false, $visited = array(), $taxonomy = 'category' ) {
+
+	if( ! is_taxonomy_hierarchical( $taxonomy ) ) {
+		return false;
+	}
+
+	$chain = '';
+	$parent = get_term( $id, $taxonomy );
+	if ( is_wp_error( $parent ) ) {
+		return $parent;
+	}
+
+	if ( $nicename ) {
+		$name = $parent->slug;
+	} else {
+		$name = $parent->name;
+	}
+
+	if ( $parent->parent && ( $parent->parent != $parent->term_id ) && !in_array( $parent->parent, $visited ) ) {
+		$visited[] = $parent->parent;
+		$chain .= get_category_parents( $parent->parent, $link, $separator, $nicename, $visited );
+	}
+
+	if ( $link ) {
+		$chain .= '<a href="' . esc_url( get_category_link( $parent->term_id ) ) . '">'.$name.'</a>' . $separator;
+	} else {
+		$chain .= $name.$separator;
+	}
+
+	return $chain;
+}
