Seu problema é que você está chamando o método errado para gerar o atributo name. Deve ser $this->get_field_name('via_cat')
Além disso, você pode usar wp_dropdown_categories()
, sem necessidade de reinventar a roda:
wp_dropdown_categories(array(
'name' => $this->get_field_name('via_cat'),
'selected' => (int)$instance['via_cat'],
));