Você não pode simplesmente passar a string "pai" para get_categories
. Você tem que passar o ID do pai.
$categories=get_categories(
array( 'parent' => $cat->cat_ID )
);
Observe que existem dois parâmetros semelhantes, mas não iguais, "get child" que você pode usar.
criança_de (integer) Exibe todas as categorias que são descendentes (ou seja, filhos e netos) da categoria identificada por seu ID. Lá não é padrão para este parâmetro. Se o parâmetro for usado, o O parâmetro hide_empty está definido como false.
pai (integer) Exibe apenas categorias descendentes diretas (ou seja, somente crianças) da categoria identificada por seu ID. Isso faz NÃO funciona como o parâmetro 'child_of'. Não há nenhum padrão para este parâmetro. [Em 2.8.4]
Agora você precisa fazer um loop sobre o $categories
. Você não pode simplesmente ecoar um array.
foreach ($categories as $c) {
var_dump($c);
// what you really want instead of var_dump is something to
// to create markup-- list items maybe, For example...
echo '<li>'.$c->cat_name.'</li>';
}