у вас не срабатывает условие
if($term->term_id == $categories->term_id)
т.к. на главной странице get_query_var('cat'); будет ""
из документации параметр
child_of - Получит дочерние категории (включая все уровни вложенности), указанной категории. В параметре указывается ID родительской категории (категория, вложенные категории которой нужно показать).
$catlist = get_categories('hide_empty=0&child_of=' . $cat_id);
из этого следует что в $catlist не будет подкатегорий