I found (googled) this function which performs almost exactly as I need. Creating a link text structure (breadcrumb) of terms for a CPT i.e. Parent Category -> Child Category -> Grand Child Category
The only issue is the order is which it is output is slightly off - Child Category -> Parent Category -> Grand Child Category
I cant figure out from the code below how to order it correctly.
Any pointers would be much appreciated.
Many thanks in advance
rob
function get_the_term_list_breadcrumbs( $id = 0, $taxonomy, $before = '', $sep = '', $after = '', $breadcrumb_sep = ' → ' ) {
$terms = get_the_terms( $id, $taxonomy );
if ( is_wp_error( $terms ) )
return $terms;
if ( empty( $terms ) )
return false;
foreach ( $terms as $term ) {
$link = get_term_link( $term, $taxonomy );
if ( is_wp_error( $link ) )
return $link;
// Find parents
$names = array();
$ancestors = get_ancestors( $term->term_id, $taxonomy );
if ( count( $ancestors ) > 0 ) {
foreach ( $ancestors as $anc ) {
$t = get_term( $anc, $taxonomy );
$names[] = $t->name;
}
}
$names[] = $term->name;
$link_text = implode( $breadcrumb_sep, $names );
$term_links[] = '<a href="' . $link . '" rel="tag">' . $link_text . '</a>';
}
$term_links = apply_filters( "term_links-$taxonomy", $term_links );
return $before . join( $sep, $term_links ) . $after;
}