Improve your WooCommerce UX by allowing customers to select quantity and add products using AJAX without a full page refresh. Here’s how to set it up.
AJAX Add to Cart with Quantity – Quick Setup Guide
1. JavaScript for AJAX Cart
Create custom-ajax-add-to-cart.js in your theme or plugin directory. Use this:
(function ($) {
function handleAjaxAddToCart() {
$(document).on('submit', 'form.cart', function (e) {
e.preventDefault();
var $form = $(this);
var quantity = $form.find('input[name="quantity"]').val();
var data = $form.serialize();
$.ajax({
type: 'POST',
url: wc_add_to_cart_params.ajax_url,
data: data + '&add-to-cart=' + $form.data('product_id'),
beforeSend: function () {
$form.removeClass('added-to-cart').addClass('loading');
},
complete: function () {
$form.removeClass('loading');
},
success: function (response) {
if (response && response.fragments) {
$.each(response.fragments, function (key, value) {
$(key).replaceWith(value);
});
}
},
});
});
}
$(document).ready(function () {
handleAjaxAddToCart();
});
})(jQuery);
2. Register Script in Theme
Include the file using this code in functions.php:
function register_ajax_cart_script() {
if (is_shop()) {
wp_enqueue_script('ajax-cart-script', get_stylesheet_directory_uri() . '/custom-ajax-add-to-cart.js', array('jquery'), '1.0', true);
}
}
add_action('wp_enqueue_scripts', 'register_ajax_cart_script');
3. Product Loop Update
Edit your shop page template to insert quantity fields:
<?php while (have_posts()) : the_post(); $product = wc_get_product(get_the_ID()); ?>
<div <?php wc_product_class('product-item'); ?>>
<form class="cart" data-product_id="<?php echo esc_attr(get_the_ID()); ?>">
<div class="quantity">
<input type="number" name="quantity" value="1" class="input-text qty text" step="1" min="1">
</div>
<button type="submit" class="button">Add to Cart</button>
</form>
</div>
<?php endwhile; ?>
4. Testing Time
Reload your WooCommerce shop, pick a quantity, and click “Add to Cart.” The item will be added without reloading the page.
Useful Note
Enable archive AJAX cart buttons via WooCommerce → Settings → Products. If you’re using a heavily customized theme, you may need to tweak templates.
