3

Is there a way to display the parent categories and subcategories for a particular post (ie. for use on single.php).

I've tried using get_the_category_list(), but it displays a list like this:

  • Subcat1
  • ParentCat1
  • Subcat2
  • Subcat3
  • ParentCat2

Even if you try the 'single' or 'multiple' display argument, it doesn't give me what I want, which is this:

  • ParentCat1
    • Subcat1
    • Subcat2
  • ParentCat2
    • Subcat 3

Is it possible to get the categories to be displayed like this? Even using another method (like get_terms())?

3
  • though, i haven't tried, the get_the_category_list function has an optional paremeter on how to display the parents -> codex.wordpress.org/Function_Reference/get_the_category_list
    – gdaniel
    Apr 25, 2016 at 18:20
  • @gdaniel Yep, but it doesn't appear to do the above as far as I can tell. It takes two options: 'single' or 'multiple'. Apr 25, 2016 at 21:46
  • Please elaborate on the "subcategories for a particular post" part? Do you mean post category siblings?
    – Z. Zlatev
    Apr 27, 2016 at 17:06

1 Answer 1

12
+50

Update 1:

Thanks to @birgire for suggesting a better way:

wp_list_categories( [ 'include' => wp_list_pluck( get_the_category(), 'term_id' ) ] );

Try this in your single.php template:

$current_cats = get_the_category();
$current_cats_ids = [];

foreach ($current_cats as $cat) {
    $current_cats_ids[] = $cat->term_id;
}

wp_list_categories([
    'include' => $current_cats_ids,
]);
7
  • 7
    This assumes the user has selected the parent(s) category as well? I guess we could wrap this into: wp_list_categories( [ 'include' => wp_list_pluck( get_the_category(), 'term_id' ) ] ); for the compact version ;-)
    – birgire
    Apr 27, 2016 at 17:41
  • @birgire :]] haven't known that WordPress has that badass function. Let me update the answer :)
    – wpclevel
    Apr 27, 2016 at 17:49
  • 2
    ps: just a note that if the include array is empty then wp_list_categories will show all the tree. But afaik there's always the fallback category (usually "uncategorized") so under normal circumstances it's not empty. But it's easy to fix that if necessary.
    – birgire
    Apr 27, 2016 at 18:01
  • Why isn't include mentioned as an argument in the documentation? (developer.wordpress.org/reference/functions/wp_list_categories) Arg. Apr 28, 2016 at 9:23
  • 2
    There are missing arguments in the function's docblock, like style, pad_counts, class and walker? and then there are all the arguments supported by get_categories() or get_terms(), like include etc. I filed the ticket #36693 yesterday @DjangoReinhardt
    – birgire
    Apr 28, 2016 at 9:42

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

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