How to display parent category name and link for custom breadcrumb

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

Leave a Comment