WooCommerce: Thay đổi số lượng sản phẩm Trang thanh toán (Checkout)

thay đổi số lượng sản phẩm trang thanh toán

Hôm nay chúng ta sẽ mã hóa một tiện ích bổ sung UX tuyệt vời àm cách nào để chúng ta hiển thị đầu vào số lượng sản phẩm bên cạnh mỗi sản phẩm trong bảng đặt hàng Thanh toán? Điều này thật tuyệt nếu mọi người cần điều chỉnh số lượng của họ khi thanh toán trước khi hoàn thành đơn đặt hàng của họ; Ngoài ra, sẽ rất hữu ích khi bạn không có trang Giỏ hàng và muốn chuyển mọi người thẳng đến Checkout và bỏ qua một cú nhấp chuột khác.

thay đổi số lượng sản phẩm trang thanh toán

Trong bài đăng này, chúng ta sẽ xem cách thêm đầu vào số lượng bên cạnh mỗi sản phẩm trên trang Thanh toán và sau đó chúng ta sẽ mã hóa để đảm bảo rằng chúng ta thực sự làm mới Checkout và cập nhật tổng số sau khi thay đổi số lượng.

Đoạn mã PHP: Hiển thị bộ chọn số lượng sản phẩm WooCommerce Checkout

Lưu ý – bạn cũng có thể cần ẩn chuỗi “x2” mà WooCommerce hiển thị bên cạnh tên sản phẩm trong trường hợp có 2 mặt hàng trong Giỏ hàng (“Tên sản phẩm x1”, “Tên sản phẩm x2”, “Tên sản phẩm x3”, v.v. tùy thuộc vào số lượng). Bạn có thể làm như vậy với 1 lớp lót gọn gàng mà bạn tìm thấy ở đầu đoạn mã bên dưới.

Các bạn copy đoạn code bên dưới và dán vào bên trong file functions.php của theme nhé.

/**
 * @snippet       Item Quantity Inputs @ WooCommerce Checkout
 * @author        ThemeTOT.com
 * @compatible    WooCommerce 6
 */
 
// ----------------------------
// Hide Quantity String Beside Product Name
 
add_filter( 'woocommerce_checkout_cart_item_quantity', '__return_empty_string' );
 
// ----------------------------
// Add Quantity Inputs
   
add_filter( 'woocommerce_cart_item_subtotal', 'themetot_checkout_item_quantity_input', 9999, 3 );
 
function themetot_checkout_item_quantity_input( $product_quantity, $cart_item, $cart_item_key ) {
     if ( is_checkout() ) {
      $product = apply_filters( 'woocommerce_cart_item_product', $cart_item['data'], $cart_item, $cart_item_key );
      $product_id = apply_filters( 'woocommerce_cart_item_product_id', $cart_item['product_id'], $cart_item, $cart_item_key );   
      $product_quantity = woocommerce_quantity_input( array(
         'input_name'  => 'shipping_method_qty_' . $product_id,
         'input_value' => $cart_item['quantity'],
         'max_value'   => $product->get_max_purchase_quantity(),
         'min_value'   => '0',
      ), $product, false );
      $product_quantity .= '<input type="hidden" name="product_key_' . $product_id . '" value="' . $cart_item_key . '">';
   }
   return $product_quantity;
}
 
// ----------------------------
// Detect Quantity Change and Recalculate Totals
 
add_action( 'woocommerce_checkout_update_order_review', 'themetot_update_item_quantity_checkout' );
 
function themetot_update_item_quantity_checkout( $post_data ) {
   parse_str( $post_data, $post_data_array );
   $updated_qty = false;
   foreach ( $post_data_array as $key => $value ) {   
      if ( substr( $key, 0, 20 ) === 'shipping_method_qty_' ) {         
         $id = substr( $key, 20 );   
         WC()->cart->set_quantity( $post_data_array['product_key_' . $id], $post_data_array[$key], false );
         $updated_qty = true;
      }      
   }   
   if ( $updated_qty ) WC()->cart->calculate_totals();
}

thay-doi-so-luong-san-phan-trang-thanh-toan-2

5/5 - (4 bình chọn)

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *