The question:
I’m currently trying to figure out how to display a categories parent / grand parents name and url for a custom breadcrumb I’m working on.
I simply need to know how to show the parent categories information on a child category page.
For example
if parent
blog
else if child
blog > parent_category
else if grandchild
blog > grand_parent_category > parent_category
The Solutions:
Below are the methods you can try. The first solution is probably the best. Try others if the first one doesn’t work. Senior developers aren’t just copying/pasting – they read the methods carefully & apply them wisely to each case.
Method 1
You can use get_ancestors
:
<?php
if ( $term_ids = get_ancestors( get_queried_object_id(), 'category', 'taxonomy' ) ) {
$crumbs = [];
foreach ( $term_ids as $term_id ) {
$term = get_term( $term_id, 'category' );
if ( $term && ! is_wp_error( $term ) ) {
$crumbs[] = sprintf( '<a href="%s" rel="nofollow noreferrer noopener">%s</a>', esc_url( get_term_link( $term ) ), esc_html( $term->name ) );
}
}
echo implode( ' > ', array_reverse( $crumbs ) );
}
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0