Как организовать выбор скидки в корзине Woocommerce

Мне нужно чтобы на странице корзины Woocommerce было 3 radio button'а:

  1. Это мой первый заказ
  2. Я постоянный клиент
  3. У меня день Рождения!

Каждый из вариантов добавляет 3%/5%/10% скидки на весь заказ соответственно. В cart.php добавил форму с тремя radio button'ами. Получилось добавить только постоянную скидку в functions.php:

function woo_discount_total(WC_Cart $cart)
{
    $discount = $cart->subtotal * 0.05;
    WC()->cart->add_fee("Ваша скидка 5% ", -$discount);
}
add_action("woocommerce_cart_calculate_fees", "woo_discount_total");

Далее безуспешно пытался играть с условиями и ajax в jQuery:

jQuery(function ($) {
$('#regular').click(function () {
    var data = {
        action: 'discountChecked',
        value: $(this).val(),
    }
    jQuery.get(newAjax.url, data, function (response) {
        jQuery('body').trigger('update_checkout')
    })
})
$('#customer').click(function () {
    var data = {
        action: 'discountChecked',
        value: $(this).val(),
    }
    jQuery.get(newAjax.url, data, function (response) {
        jQuery('body').trigger('update_checkout')
    })
})
$('#birthday').click(function () {
    var data = {
        action: 'discountChecked',
        value: $(this).val(),
    }
    jQuery.get(newAjax.url, data, function (response) {
        jQuery('body').trigger('update_checkout')
    })
})
})

После всех манипуляций в functions.php у меня следующий код, но он не работает, при прямом запросе admin-ajax.php выводится "0".

add_action('wp_ajax_discountChecked', 'woo_discount_total');
add_action('wp_ajax_nopriv_discountChecked', 'woo_discount_total');
add_action('wp_enqueue_scripts', 'ajax_assets');
function ajax_assets()
{
    wp_enqueue_script('happy_scripts', get_template_directory_uri() . '/js/main.js', array('jquery'));
    wp_localize_script('happy_scripts', 'newAjax', array(
        'url' => admin_url('admin-ajax.php'),
    ));
}
add_action("woocommerce_cart_calculate_fees", "woo_discount_total", 1, 1);
function woo_discount_total()
{
    if (empty($_GET['value'])) {
        $dscnt_val = 0;
    } else {
        $dscnt_val = esc_attr($_GET['value']);
    }
    $discount = WC()->cart->get_subtotal() * $dscnt_val;
    WC()->cart->add_fee("Ваша скидка ", -$discount);
    // wp_die();
}

Я не особо силён в ajax и wp, уже неделю мучаюсь с этой проблемой. Заранее спасибо!

P.S. Нашёл похожую проблему, но не могу понять как её проецировать на мой случай: Похожая проблема


Ответы (0 шт):