Как организовать выбор скидки в корзине Woocommerce
Мне нужно чтобы на странице корзины Woocommerce было 3 radio button'а:
- Это мой первый заказ
- Я постоянный клиент
- У меня день Рождения!
Каждый из вариантов добавляет 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. Нашёл похожую проблему, но не могу понять как её проецировать на мой случай: Похожая проблема