Как вывести бесплатную доставку от суммы итога корзины, а не подытога (с учетом скидки)?
Подскажите, пожалуйста, как заставить woocommerce выводить бесплатную доставку, к примеру, от 1000 руб., когда пользователю дополнительно предоставляется скидка и сумма итога уже становится 900 руб. В стандартных методах доставки можно указать условие с учетом минимальной суммы и купона. Но, скидка считается не купоном и необходимо считать итог корзины, а не подытог. Сторонние плагины также считают по подытогу, то есть позволяют сделать бесплатную доставку человеку, у кого итоговая стоимость корзины не 1000, а 900 рублей (применена скидка 10%).
Дополнительно
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
WooCommerce по умолчанию считает бесплатную доставку от условий shipping method: минимальная сумма, купон и т.п. Если ваша скидка не купон, а кастомная скидка/fee, стандартная логика может смотреть не на тот итог. Нужно фильтровать доступные способы доставки и проверять текущий total после скидок.
Пример идеи:
add_filter('woocommerce_package_rates', function ($rates, $package) { $threshold = 1000; $total = WC()->cart ? (float) WC()->cart->get_total('edit') : 0; foreach ($rates as $rate_id => $rate) { if ($rate->method_id === 'free_shipping' && $total < $threshold) { unset($rates[$rate_id]); } } return $rates; }, 20, 2);
Но проверьте, что
get_total('edit')в вашей версии WooCommerce возвращает нужную сумму именно после скидок и до/после доставки так, как вам нужно. Иногда лучше считать вручную:$total = WC()->cart->get_subtotal() - WC()->cart->get_discount_total();
После изменения условий доставки нужно очистить shipping cache/session, иначе WooCommerce может показывать старые rates. Для проверки меняйте товары/количество и обновляйте checkout.
Итог: бесплатную доставку можно скрывать через
woocommerce_package_rates, ориентируясь на итог после вашей скидки, а не только на стандартные настройки метода.