Плата за добавление корзины Woocommerce не сохраняется при оформлении заказа

Я использую метод add_fee, чтобы выставить цену на мою корзину. Это работает, и все в порядке, но когда я нажимаю кнопку «Оформить заказ» и перехожу на страницу оформления заказа или обновляю страницу, новая цена исчезает, а старая цена появляется. Как я могу сохранить свою цену в корзине?

function woo_add_cart_fee($cart_obj) {
global $woocommerce;

$count = $_POST['qa'];

$extra_shipping_cost = 0;
//Loop through the cart to find out the extra costs
foreach ( $woocommerce->cart->get_cart() as $cart_item_key => $values ) {
//Get the product info
$_product = $values['data'];

//Adding together the extra costs
$extra_shipping_cost = $extra_shipping_cost + $_product->price;
}

$extra_shipping_cost = $extra_shipping_cost * $count;
//Lets check if we actually have a fee, then add it
if ($extra_shipping_cost) {
$woocommerce->cart->add_fee( __('count', 'woocommerce'),   $extra_shipping_cost );
}
}
add_action( 'woocommerce_before_calculate_totals', 'woo_add_cart_fee');

1

Решение

Вам нужно использовать woocommerce_cart_calculate_fees крюк вместо. Я также пересмотрел ваш код, так как вам нужно сохранить $_POST['qa']; Значение, чтобы сделать плату постоянной:

add_action( 'woocommerce_cart_calculate_fees', 'cart_custom_fee', 20, 1 );
function cart_custom_fee( $cart_obj ) {

if ( is_admin() && ! defined( 'DOING_AJAX' ) ) return;

$count = $_POST['qa'];

$extra_shipping_cost = 0;

// Loop through the cart items to find out the extra costs
foreach ( $cart_obj->get_cart() as $cart_item ) {

//Adding together the extra costs
$extra_shipping_cost = $extra_shipping_cost + $cart_item['data']->price;
}

$extra_shipping_cost = $extra_shipping_cost * $count;

//Lets check if we actually have a fee, then add it
if ( $extra_shipping_cost != 0 ) {
$cart_obj->add_fee( __('count', 'woocommerce'),   $extra_shipping_cost );
}
}

Код помещается в файл function.php вашей активной дочерней темы (или активной темы).

Это должно работать как ожидалось сейчас.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]