Custom Coupon For Woocommerce
Tue Aug 06 2024 11:00:28 GMT+0000 (Coordinated Universal Time)
function woo_checkout_custom_coupon_form(){
if ( ! wc_coupons_enabled() ) { // @codingStandardsIgnoreLine.
return;
}
?>
<div class="mini-cart-nm-coupon">
<div class="mini-cart-nm-coupon-heading">Enter your discount code</div>
<div class="nm-coupon" style="display: flex;">
<input type="text" id="nm-coupon-code" class="input-text nm-coupon-code" name="nm_coupon_code" value="" placeholder="">
<button type="button" id="nm-apply-coupon-btn" class="button" name="nm_apply_coupon" value="" onclick="applyCoupon(this)" style="white-space: nowrap;"><?php esc_html_e( 'ACTIVATE', 'woocommerce' ); ?></button>
</div>
<div class="nm-coupon-notify" style="display: none; color: #FF0000;"></div>
</div>
<script type="text/javascript">
function applyCoupon(button) {
let form = button.closest('.nm-coupon');
button.innerText = 'ACTIVATE...';
let couponCode = form.querySelector(".nm-coupon-code").value;
let ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>';
jQuery.ajax({
type: "GET",
url: ajaxurl,
dataType: 'json',
data: 'coupon_code=' + couponCode + '&action=custom_apply_coupon',
success: function (data) {
if (data.status === 'success') {
jQuery(document.body).trigger('wc_fragment_refresh');
} else if (data.status === 'already_used') {
jQuery('.nm-coupon-notify').html('Coupon already used!');
jQuery('.nm-coupon-notify').show();
} else {
jQuery('.nm-coupon-notify').html('Coupon is not valid!');
jQuery('.nm-coupon-notify').show();
}
if (jQuery('body').hasClass('woocommerce-checkout'))
jQuery(document.body).trigger('update_checkout');
},
});
}
// Remove coupon script
(function($) {
$('body').on('click', '.woocommerce-remove-coupon', function(e) {
e.preventDefault();
let ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>';
var coupon = $(this).data('coupon');
$.ajax({
url: ajaxurl,
type: 'POST',
data: {
action: 'remove_coupon',
coupon: coupon,
},
success: function(response) {
jQuery(document.body).trigger('wc_fragment_refresh');
},
error: function(error) {
console.log('Error:', error);
}
});
});
})(jQuery);
</script>
<?php
}
add_action( 'woo_custom_checkout_coupon_form', 'woo_checkout_custom_coupon_form',10 );
add_action('wp_ajax_custom_apply_coupon', 'custom_apply_coupon');
add_action('wp_ajax_nopriv_custom_apply_coupon', 'custom_apply_coupon');
function custom_apply_coupon() {
$coupon_code = isset($_GET['coupon_code']) ? $_GET['coupon_code'] : '';
$coupon_code = sanitize_text_field($coupon_code);
// Check if the coupon is already applied
if (WC()->cart->has_discount($coupon_code)) {
echo json_encode(array('status' => 'already_used'));
} else {
// Apply coupon
$applied = WC()->cart->apply_coupon($coupon_code);
if ($applied) {
echo json_encode(array('status' => 'success'));
} else {
echo json_encode(array('status' => 'invalid'));
}
}
wp_die();
}
add_action('wp_ajax_remove_coupon', 'remove_coupon_from_cart');
add_action('wp_ajax_nopriv_remove_coupon', 'remove_coupon_from_cart');
function remove_coupon_from_cart() {
if (isset($_POST['coupon'])) {
$coupon_code = sanitize_text_field($_POST['coupon']);
WC()->cart->remove_coupon($coupon_code);
wc_clear_notices();
wp_send_json_success();
} else {
wp_send_json_error('Coupon code not provided.');
}
}



Comments