Для такой задачи вместо get_categories() лучше использовать get_terms()
Базовое использование:
$args = array(
'taxonomy' => array( 'category' ), // название таксономии (рубрики) можно несколько через запятую в кавычках
'orderby' => 'id',
'order' => 'ASC',
'hide_empty' => true,
'parent' => 0, // здесь указываем 0, чтобы получить элементы только одного уровня без вложенностей
'child_of' => 0, // здесь указываем ID рубрики, подрубрики которой хотим получить
'pad_counts' => 1 // этот параметр посчитает количество подрубрик в рубриках
);
$myterms = get_terms( $args );
// проходимся по массиву и получаем объекты, которые можно вывести как нужно.
foreach( $myterms as $term ){
print_r($term);
// или конкретно
echo $term->title; // выведет название рубрики
echo $term->term_id; // выведет ID подрубрики
echo $term->count; // выведет число подрубрик (3 уровень) в выводимой подрубрике (2 уровень)
}
Обязательно посмотрите справку по функции get_terms() чтобы добавить в функцию остальные параметры если нужно. Например, здесь
https://wp-kama.ru/function/get_terms