Arhn - архитектура программирования

Как мне динамически изменять сумму купона и отображать ее в итоговой сумме корзины в WooCommerce

Я создал купон Woocommerce с типом скидки, установленным на фиксированную скидку корзины и начальную сумму купона.

Я хочу, чтобы купон функционировал таким образом, чтобы, когда покупатель вводит код купона, вычисляется общая скидка и устанавливается как сумма купона. Я использую ловушку woocommerce_applied_coupon в файле function.php темы.

Вот как я кодировал:

add_action( 'woocommerce_applied_coupon', 'action_woocommerce_applied_coupon', 10, 3 );

function action_woocommerce_applied_coupon( $array, $int, $int ){
  $total_discount = 0;
  $wc = wc();//use the WC class

  foreach($wc->cart->get_cart() as $cart_item){
    //loop through each cart line item

    $total_discount += ...; //this is where the total discount is computed
  }

  //use the WC_COUPON class
  $wc_coupon = new WC_Coupon("coupon-code");// create an instance of the class using the coupon code
  $wc_coupon->set_amount($total_discount);//set coupon amount to the computed discounted price
  var_dump($wc_coupon->get_amount());//check if the coupon amount did update
}

Var_dump отображает $ total_discount. Но когда я проверил итоги корзины, я все еще вижу начальную сумму купона как скидку.

Как мне обновить сумму купона и применить ее в качестве скидки к общей сумме корзины?

26.01.2018

  • Я думаю, вам нужно обновить строку корзины, связанную с купоном, var_dump cart или взглянуть на класс WC_Cart, надеюсь, это немного поможет. 27.01.2018

Ответы:


1

Попробуй это

add_action( 'woocommerce_before_calculate_totals', 'auto_add_coupons_total_based', 10, 1 ); function auto_add_coupons_total_based( $cart ) {

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

// HERE define your coupon code
$coupon_percent = 'xyz20'; # <===  <===  <===  <===  <===  <===
$coupon_fixed = 'fixedamount'; # <===  <===  <===  <===  <===  <===  <===

// Get cart subtotal
$subtotal = 0;
foreach($cart->get_cart() as $cart_item ){
    $subtotal += $cart_item['line_subtotal'];
    $subtotal += $cart_item['line_subtotal_tax']; // with taxes
}

//Set HERE the limit amount
$limit = 40; //without Tax


// Coupon type "percent" (less than 200)
if( $subtotal < 200 && ! $cart->has_discount( $coupon_percent ) ){
    // If coupon "fixed amount" type is in cart we remove it
    if( $cart->has_discount( $coupon_fixed ) )
        $cart->remove_coupon( $coupon_fixed );


}
// Coupon type "fixed amount" (Up to 200)
if( $subtotal >= 200 && $cart->has_discount( $coupon_percent ) ) {
    // If coupon "percent" type is in cart we remove it
    if( $cart->has_discount( $coupon_percent ) )
        $cart->remove_coupon( $coupon_percent );

    // Apply the "fixed amount" type coupon code
    $cart->add_discount( $coupon_fixed );


    // Displaying a custom message
        $message = __( "The total discount limit of $$limit has been reached", "woocommerce" );
        wc_add_notice( $message, 'notice' );



}

}

03.07.2018
Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..