УРА! Совместными усилиями! Мы нашли проблему: для исправления бага в api/variants. Оказалось все как всегда просто!
Код:
вместо
$query = $this->db->placehold("SELECT v.name
FROM __variants AS v
WHERE
v.name <> ''
$product_id_filter
$instock_filter
GROUP BY v.name
");
заменить на
$query = $this->db->placehold("SELECT v.name
FROM __variants AS v
WHERE
v.name <> ''
$product_id_filter
AND (v.stock>0 OR v.stock IS NULL)
GROUP BY v.name
");
так как конструкция не отрабатывает свое и с isset тоже
if(!empty($filter['in_stock']) && $filter['in_stock'])
$instock_filter = $this->db->placehold('AND (v.stock>0 OR v.stock IS NULL)');
Но это решает проблему если вариант один у одного товара, т.е. скрывается только вариант в фильтре, а не товар. Не работает, если у нас 2 товара с одинаковыми названиями вариантов, и у одного будет 0 кол-во варианта, то фильтр покажет все равно оба

(( да чтож такое((