не знаю насколько этот код актуален, но делал так
$category_id = get_query_var( 'cat' ); // Get current catgory ID
$category = get_term( $category_id, 'category' ); // Fetch category term object
// get_categories(['']);
// 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
);
echo "parent: {$category->parent}";
// echo "category_id: $category_id";
// 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;
}
// $args['show_option_all'] = 'Все';
$args['hide_empty'] = true;
// 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
}