Можно заменить
$filters[$filter_id]['variants'][$variant_id]['disabled'] = true;
на
if (!empty($available_variants) && !empty($available_variants[$filter_id])) {
foreach ($filters[$filter_id]['variants'] as $variant_id => $v) {
if (empty($available_variants[$filter_id]['variants'][$variant_id])) {
unset($filters[$filter_id]['variants'][$variant_id]);
$v['disabled'] = true;
$filters[$filter_id]['variants'][$variant_id] = $v;
}
}
}
И вот эту часть делать не нужно, вызывает конфликт с tpl-шаблоном фильтров: