add_action('wp_ajax_update_cart_item', 'custom_ajax_update_cart_item');
add_action('wp_ajax_nopriv_update_cart_item', 'custom_ajax_update_cart_item');
function custom_ajax_update_cart_item() {
if (!isset($_POST['cart_item_key']) || !isset($_POST['quantity'])) {
wp_send_json_error(['message' => 'Missing cart item key or quantity']);
}
$cart_item_key = wc_clean($_POST['cart_item_key']);
$quantity = max(1, intval($_POST['quantity']));
if (!WC()->cart) {
wc_load_cart();
}
$updated = WC()->cart->set_quantity($cart_item_key, $quantity, true);
if ($updated === false) {
wp_send_json_error(['message' => 'Invalid cart item key']);
}
WC()->cart->calculate_totals();
WC()->cart->maybe_set_cart_cookies();
ob_start();
woocommerce_mini_cart();
$mini_cart = ob_get_clean();
wp_send_json_success([
'fragments' => apply_filters('woocommerce_add_to_cart_fragments', [
'div.widget_shopping_cart_content' => '
' . $mini_cart . '
',
]),
'cart_hash' => WC()->cart->get_cart_hash(),
]);
}