Я тоже сначала этот вариант загуглил. Он работает отлично, если в корзине подразумевается только 1 товар подарочный, но ведь могут 3 штуки купить, из которых только одна должна быть подарочной, мысль у меня была такая
$currPrice = $value['data']->price;
$currQuant = $value["quantity"];
$custom_price = ($currPrice*$currQuant) - $currPrice;
$value['data']->price = $custom_price;
Но а в таком случае итоговая стоимость этого товара, умножается ещё раз на количество товара и получается что на расчёт идёт $custom_price*количество...
Судя по всему за это отвечает
$value['line_total'];
$value['line_subtotal'];
Но их изменение не к чему не приводит, сделал вот такое решение. Не знаю правильно или нет, но вроде работает)
$currPrice = $value['data']->price;
$currQuant = $value["quantity"];
$totalPrice = $currPrice * $currQuant;
$salePrice = $totalPrice - $currPrice;
$saledPrice = $salePrice/$currQuant;
$value['data']->price = $saledPrice;