WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

The question is simple.
Imagine that I have a post named 'Single Post' which is inside the category 'sub-cat' which is a child of 'parent-cat' which is a child of 'super-cat'. What I need to do is to display all the related categories within the post page in the following order:

super-cat > parent-cat > sub-cat > Single Post
share|improve this question
up vote 1 down vote accepted
    the_category( ' > ', 'multiple', $post->ID); 
    echo ' > ';

This works correctly when the post is in just one category. But if it's in multiple categories, or if the category parents are also selected — in your case, if the post is also in super-cat and parent-cat — then it displays those categories twice.
So this is probably not going to do it for you.

I suspect some of the breadcrumb type plugins might have solved this though.

share|improve this answer

This should do the trick:

$cats = get_the_category(); //retrieve cats for post

foreach ($cats as $cat) { //go thru to find child one - means cat which has specified parent id
    if ($cat->category_parent != 0) {
        $child = $cat->term_taxonomy_id;
echo get_category_parents( $child, TRUE, ' > ' );

First we get categories for particular post, then we find last child and then with get_category_parents we get whole tree of its parents...

share|improve this answer
doesn't work... – Towfiq Jan 25 '14 at 19:53

you need to sort the categories first.

// get categories of post in sorted order
$categories = sortCategories(get_the_category());     

foreach($categories AS $category) {
    echo $category->name; // Plot category name
echo get_the_title(); // Plot post name

function sortCategories($categories) { // Sorting the category
    usort($categories, "cmpCategories");
    return $categories;

function cmpCategories($category_1,$category_2) { // Sort function
    foreach(get_categories(array("parent" => $category_1->cat_ID)) AS $sub) {
        if($category_2->cat_ID == $sub->cat_ID) return -1;
    return 1;

I hope this helped.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.