4

My category structure is as follows:

- Top Category
---- Sub Category 1
------- Sub Sub Category 1.1
------- Sub Sub Category 1.2
------- Sub Sub Category 1.3
---- Sub Category 2
------- Sub Sub Category 2.1
------- Sub Sub Category 2.2
------- Sub Sub Category 2.3

I'm on a post under 1.2 so it would be:

Top Category -> Sub Category 1 -> Sub Sub Category 1.2 -> Current Post

NB: In the post ONLY "Sub Category 1" and "Sub Sub Category 1.2" are selected as categories ("Top Category" is not checked).

Now, how do I get get the slug of the Top Category ("top-category"), navigating backward?

Thanks!

2

get_ancestors() returns an array containing the parents of any given object.

This example has two categories. The parent with the id of 447 and the child with a id of 448 and returns the a category hierarchy (with IDs):

get_ancestors( 448, 'category' ); 

returns:

Array
(
    [0] => 447
) 

get_ancestors Codex Page

0

get_ancestors()

Is the correct way to get all the parent categories of a specific category in the hierarchical order, so to get the highest level parent you could extract the last item of the array returned like this:

// getting all the ancestors of the categories 
$ancestor_cat_ids = get_ancestors( $queried_cat_id, 'category');

// getting the last item of the array of ids returned by the get_ancestors() function
$highest_ancestor = $ancestor_cat_ids[count($ancestor_cat_ids) - 1];

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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