Here is how a WooCommerce coupon code can be checked for validity. The code below allows us to check WooCommerce coupon against the database. This is done using the inbuilt WC_Coupon class provided by WooCommerce.
The coupon code is sent to the function coupon_check_via_ajax(). The above function is AJAX enabled by registering it with wordpress AJAX using wp_ajax_* actions for both logged in and public users.
The Javascript
jQuery(function($){ jQuery('input[name="check_coupon"]').on('click', function(){ vardata= { 'action':'check_coupon_via_ajax', 'code':jQuery('input[name="coupon_code"]').val() }; jQuery.post('/wp-admin/admin-ajax.php', data, function(response) { if(response.status==0){ // -- ERROR } else { // -- SUCCESS } }, 'json'); }); });
And the PHP code
function coupon_check_via_ajax(){ >
$code = strtolower(trim($_POST[‘code’]));
$coupon = new WC_Coupon($code);
$coupon_post = get_post($coupon->id);
if(!empty($coupon_post) && $coupon_post != null){
$message = ‘Coupon not valid’;
$status = 0;
if($coupon_post->post_status == ‘publish’){
$message = ‘Coupon validated’;
$status = 1;
}
} else {
$status = 0;
$message = ‘Coupon not found!’;
}
print json_encode( [ ‘status’ => $status, ‘message’ => $message, ‘poststatus’ => $coupon_post->post_status, ‘coupon_post’ => $coupon_post ] );
exit();
}
add_action( ‘wp_ajax_check_coupon_via_ajax’, ‘coupon_check_via_ajax’ );
add_action( ‘wp_ajax_nopriv_check_coupon_via_ajax’, ‘coupon_check_via_ajax’ );
[/php]
More wordpress articles located here
More about WC_Coupon from the WooCommerce documentation can be found here