Phát Hiện Thay Đổi Số Lượng và Tính Lại Tổng

// ----------------------------
// Detect Quantity Change and Recalculate Totals

add_action('woocommerce_checkout_update_order_review', 'update_item_quantity_checkout');

function update_item_quantity_checkout($post_data) {
    // Phân tích dữ liệu POST từ form checkout
    parse_str($post_data, $post_data_array);

    $updated_qty = false;
    foreach ($post_data_array as $key => $value) {   
        // Kiểm tra các khóa bắt đầu bằng 'shipping_method_qty_'
        if (substr($key, 0, 20) === 'shipping_method_qty_') {         
            // Lấy ID sản phẩm từ khóa
            $id = substr($key, 20);   
            // Cập nhật số lượng sản phẩm trong giỏ hàng
            WC()->cart->set_quantity($post_data_array['product_key_' . $id], $post_data_array[$key], false);
            $updated_qty = true;
        }      
    }   

    // Tính toán lại tổng nếu số lượng đã được cập nhật
    if ($updated_qty) WC()->cart->calculate_totals();
}