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!
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!
Share Improve this question edited Apr 25, 2015 at 12:59 fuxia♦ 107k39 gold badges255 silver badges459 bronze badges asked Apr 25, 2015 at 12:23 medkmedk 1511 gold badge1 silver badge3 bronze badges2 Answers
Reset to default 4get_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
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];