WooCommerce - изменить цену товара в корзине

Я создаю плагин «Купи за ххх и получи подарок в подарок».

Все работает нормально, но когда я добавляю подарок в корзину, цена равна 0, но в промежуточном итоге я все еще вижу цену с включенной ценой «бесплатный продукт».

Т.е. у меня есть вещи на 200 долларов, и я имею право получить бесплатный подарок. Я забираю его, и подарок добавляется в корзину. Цена равна 0. Но в промежуточном итоге я все равно вижу цены на товары + бесплатный подарок.

Я устанавливаю цену в before_calculate_totals хук так:

    foreach ($cart as $key => $item) {
        if (isset($item['_wfg_gift']) && $item['_wfg_gift'] == 1) {
            $item['data']->set_price(0);
        }
    }

Я также пробовал ловушку calculate_totals, но безуспешно. Я не могу использовать фильтр get_price, так как пользователь может захотеть купить тот же продукт, который предлагается в качестве бесплатного подарка.

Как установить цену товара в корзине, чтобы она работала в корзине, промежуточном и общем итогах?


person user1049961    schedule 19.06.2017    source источник


Ответы (1)


Ты на правильном пути.

"woocommerce_before_calculate_totals" это действие используется для обновления цены товара в корзине.

Пожалуйста, проверьте ваше состояние в коде, отладив его.

Вы хотите установить «0» только для «Бесплатного товара» или установить «0» для всей корзины?

person Pribhav    schedule 20.06.2017
comment
Цену выставляю правильно афаик, в тележке 0, но в промежуточном итог цена посчитана ... Понятия не имею, что тут творится .. - person user1049961; 22.06.2017