Спасибо за решение!
Нашел парочку ошибок, делюсь исправлением:
1. Чтобы округление до сотых работало, нужно строку:
round($custom_price, 2); // округляем до сотых, чтобы в regular_price не записывались огромные дроби
заменить на:
$custom_price = round($custom_price, 2); // округляем до сотых...