Using WordPress ‘get_category_children()’ PHP function

The get_category_children() WordPress PHP function retrieves a list of category children separated before and after the term IDs.


get_category_children($id, $before = '/', $after = '', $visited = array());


  • $id (int) – Category ID to retrieve children.
  • $before (string) – Optional. Prepend before category term ID. Default ‘/’.
  • $after (string) – Optional. Append after category term ID. Default: ”.
  • $visited (array) – Optional. Category Term IDs that have already been added. Default: array().

More information

See WordPress Developer Resources: get_category_children()

Important: This function is deprecated. To replace it with get_term_children(), note that get_category_children() returns a string, while get_term_children() returns an array of Category IDs. Also, get_term_children() requires a second parameter of ‘category’, which is the name of the pre-defined Taxonomy for Categories.


Display child categories for a specific category

// Get child categories of the category with ID 5
$child_categories = get_category_children(5);
echo $child_categories;

Custom separators for child categories

// Get child categories of the category with ID 6 and custom separators
$child_categories = get_category_children(6, '(', ')');
echo $child_categories;

Using get_category_children() in a loop

// Get all top-level categories
$categories = get_categories(array('parent' => 0));

// Loop through categories and display their child categories
foreach ($categories as $category) {
    $child_categories = get_category_children($category->term_id);
    echo $category->name . ': ' . $child_categories;

Avoid duplicates with the $visited parameter

// Get child categories of the category with ID 7 and avoid duplicates
$visited = array(12, 15); // Category IDs to exclude
$child_categories = get_category_children(7, '/', '', $visited);
echo $child_categories;

Create a nested list of categories and their children

function display_category_children($parent_id) {
    // Get child categories of the given parent ID
    $child_categories = get_categories(array('parent' => $parent_id));

    // Display child categories in a nested list
    if (!empty($child_categories)) {
        echo '<ul>';
        foreach ($child_categories as $child_category) {
            echo '<li>' . $child_category->name;
            echo '</li>';
        echo '</ul>';

// Display a nested list of categories and their children for the category with ID 8