Expand Collapse Categories in WordPress



Only Show Children of a Category

The following example code generates category links, sorted by ID, only for the children of the category with ID 8; it shows the number of posts per category and hides category descriptions from the title attribute of the generated links. Note: If there are no posts in a parent Category, the parent Category will not display.

<?php wp_list_categories('orderby=id&show_count=1
&use_desc_for_title=0&child_of=8'); ?>

Remove Parentheses from Category Counts

When show_count=1, each category count is surrounded by parentheses. In order to remove the parentheses without modifying core WordPress files, use the following code.

$variable = wp_list_categories('echo=0&show_count=1&title_li=<h2>Categories</h2>');
$variable = str_replace(array('(',')'), '', $variable);
echo $variable;

Include or Exclude Categories

To sort categories alphabetically and include only the categories with IDs of 16, 3, 9 and 5, you could write the following code:

wp_list_categories('orderby=name&include=3,5,9,16'); ?>

The following example displays category links sorted by name, shows the number of posts for each category, and excludes the category with the ID of 10 from the list.

wp_list_categories('orderby=name&show_count=1&exclude=10'); ?>

Display or Hide the List Heading

The title_li parameter sets or hides a title or heading for the category list generated by wp_list_categories. It defaults to '(__('Categories')', i.e. it displays the word “Categories” as the list’s heading. If the parameter is set to a null or empty value, no heading is displayed. The following example code excludes categories with IDs 4 and 7 and hides the list heading:

wp_list_categories('exclude=4,7&title_li='); ?>

In the following example, only Cateogories with IDs 9, 5, and 23 are included in the list and the heading text has been changed to the word “Poetry”, with a heading style of <h2>:

wp_list_categories('include=5,9,23&title_li=<h2>' . __('Poetry') . '</h2>' ); ?>

List Categories

NOTE: wp_list_categories() works in much the same way as the two template tags replaced in WordPress 2.1, list_cats() and wp_list_cats() (both deprecated).


<?php wp_list_categories( $args ); ?>

Default Usage

<?php $args = array(
'show_option_all'    => ,
'orderby' => 'name',
'order' => 'ASC',
'show_last_update' => 0,
'style' => 'list',
'show_count' => 0,
'hide_empty' => 1,
'use_desc_for_title' => 1,
'child_of' => 0,
'feed' => ,
'feed_type'          => ,
'feed_image' => ,
'exclude'            => ,
'exclude_tree' => ,
'include'            => ,
'current_category' => 0,
'hierarchical' => true,
'title_li' => __( 'Categories' ),
'number' => NULL,
'echo' => 1,
'depth' => 0 ); ?>

By default, the usage shows:

  • No link to all categories
  • Sorts the list of Categories by the Category name in ascending order
  • Does not show the last update (last updated post in each Category)
  • Displayed in an unordered list style
  • Does not show the post count
  • Displays only Categories with posts
  • Sets the title attribute to the Category Description
  • Is not restricted to the child_of any Category
  • No feed or feed image used
  • Does not exclude any Category and includes all Categories
  • Displays the active Category with the CSS Class-Suffix ‘ current-cat’
  • Shows the Categories in hierarchical indented fashion
  • Display Category as the heading over the list
  • No SQL LIMIT is imposed (‘number’ => 0 is not shown above)
  • Displays (echos) the categories
  • No limit to depth
  • All categories.


(string) A non-blank values causes the display of a link to all categories if the style is set to list. The default value is not to display a link to all.
(string) Sort categories alphabetically, by unique Category ID, or by the count of posts in that Category. The default is sort by category name. Valid values:

  • ID
  • name – Default
  • slug
  • count
  • term_group
(string) Sort order for categories (either ascending or descending). The default is ascending. Valid values:

  • ASC – Default
  • DESC
(boolean) Should the last updated timestamp for posts be displayed (TRUE) or not (FALSE). Defaults to FALSE.

  • 1 (True)
  • 0 (False) – Default
(string) Style to display the categories list in. A value of list displays the categories as list items while none generates no special display method (the list items are separated by <br> tags). The default setting is list (creates list items for an unordered list). See the markup section for more. Valid values:

  • list – Default
  • none
(boolean) Toggles the display of the current count of posts in each category. The default is false (do not show post counts). Valid values:

  • 1 (True)
  • 0 (False) – Default
(boolean) Toggles the display of categories with no posts. The default is true (hide empty categories). Valid values:

  • 1 (True) – Default
  • 0 (False)
(boolean) Sets whether a category’s description is inserted into the title attribute of the links created (i.e. <a title=”<em>Category Description</em>” href=”…). The default is true (category descriptions will be inserted). Valid values:

  • 1 (True) – Default
  • 0 (False)
(integer) Only display categories that are children of the category identified by this parameter. There is no default for this parameter.
(string) Display a link to each category’s rss-2 feed and set the link text to display. The default is no text and no feed displayed.
(string) Set a URI for an image (usually an rss feed icon) to act as a link to each categories’ rss-2 feed. This parameter overrides the feed parameter. There is no default for this parameter.
(string) Exclude one or more categories from the results. This parameter takes a comma-separated list of categories by unique ID, in ascending order. See the example. The child_of parameter is automatically set to false.
(string) Exclude category-tree from the results. This parameter added at Version 2.7.1
(string) Only include the categories detailed in a comma-separated list by unique ID, in ascending order. See the example.
(boolean) Display sub-categories as inner list items (below the parent list item) or inline. The default is true (display sub-categories below the parent list item). Valid values:

  • 1 (True) – Default
  • 0 (False)
(string) Set the title and style of the outer list item. Defaults to “_Categories”. If present but empty, the outer list item will not be displayed. See below for examples.
(integer) Sets the number of Categories to display. This causes the SQL LIMIT value to be defined. Default to no LIMIT.
(boolean) Show the result or keep it in a variable. The default is true (display the categories organized). This parameter added at Version 2.3 Valid values:

  • 1 (True) – Default
  • 0 (False)
(integer) This parameter controls how many levels in the hierarchy of Categories are to be included in the list of Categories. The default value is 0 (display all Categories and their children). This parameter added at Version 2.5

  • 0 – All Categories and child Categories (Default).
  • -1 – All Categories displayed in flat (no indent) form (overrides hierarchical).
  • 1 – Show only top level Categories
  • n – Value of n (some number) specifies the depth (or level) to descend in displaying Categories
(integer) Allows you to force the “current-cat” to appear on uses of wp_list_categories that are not on category archive pages. Normally, the current-cat is set only on category archive pages. If you have another use for it, or want to force it to highlight a different category, this overrides what the function thinks the “current” category is. This parameter added at