List Categories of the Parent Category of the Current Category

Assuming you have only two levels of categories, you could first retrieve the parent category and then list the child categories. Furthermore, calling get_children and wp_list_categories uses more resources than necessary, using only wp_list_categories would suffice. I’ve explained my answer in the following snippet that should behave exactly as you need it to!

$category_id = get_query_var( 'cat' ); // Get current catgory ID
$category = get_term( $category_id, 'category' ); // Fetch category term object

// Now, we check if the category has a parent
// If it has, we use that ID
// If it doesn't have a parent, it is a parent category itself and we use its own ID
$parent = $category->parent ? $category->parent : $category_id;

$args = array(
    'show_count' => false,
    'hide_empty' => false,
    'title_li' => '',
    'show_option_none' => '',
    'echo' => false
);

// Show the children of parent category
if ( $category->parent ) {
    $args['child_of'] = $category->parent;
    $args['exclude'] = $category_id; // Don't display the current category in this list
}
else {
    $args['child_of'] = $category_id;
}

// Get the category list
$categories_list = wp_list_categories( $args );

if ( $categories_list ) {
    ?>
    <div class="category-wrapper">
        <ul class="child-categories">
            <?php echo $categories_list; ?>
        </ul>
    </div>
    <?php
}

Leave a Comment