Làm việc với sản phẩm có biến thể(product variations) trong woocommerce

Trong bài này mình sẽ hướng dẫn các bạn thao tác cơ bản với các sản phẩm biến thể với code. Sản phẩm có biến thể về cơ bản cũng giống các sản phẩm bình thường, là một phiên bản khác của sả phẩm bình thường.

//
$product = wc_get_product( $product_id );
if($product->is_type( 'variable') {
   $variations = $product->;get_available_variations();
   foreach( $variations as $index => $variation ) {
   // Xử lý code cho từng variation của product
  }
}

Đầu tiên : lấy ra sản phẩm gốc = dunction wc_get_product($product_id) sau đó lấy danh sách biến thể bằng method get_available_variations() của product Nhưng trước đó nhớ hãy check xem sản phẩm có cho phép loại biến thể bằng is_type( ‘variable’) đã nhé. get_available_variations() trả về một mảng các variation từ đây có thể lấy các các thông tin khác của từng variation. Dựa trên data của từng variation các bạn có thể dùng nó vào mục đích của mình ví dụ như:

Ví dụ với sản phẩm biến thể với sản phẩm gốc có id = 86 có 2 thuộc tính: Kích thước(size): L – XL; Màu sắc(color): Trắng – Đen. Chọn kích thướcc XL, màu Trắng, số lượng 2

//
$input_id = 86;
$input_attr = array(
   "size" => "XL",
   "color" => "Trắng"
);
$input_quantity = 2;
$product = wc_get_product( $input_id );
$product_id = $input_id;
if($product->is_type( 'variable') {
   $add_to_cart_variation_id;
   $variations = $product->get_available_variations();
   foreach( $variations as $index => $variation ) {
      $variation_attrs = $variation["attributes"];
      if( $input_attr == variation_attrs ){
         $add_to_cart_variation_id = $variation["id"];
         break;
       }
   }
}
if( !empty( $add_to_cart_variation_id ) ) {
   WC()->cart->add_to_cart( $product_id, $input_quantity, $add_to_cart_variation_id, $input_attr );
}else {
   WC()->cart->add_to_cart( $product_id, $input_quantity );
}

Chúc các bạn thành công
Nguồn tham khảo: https://woocommerce.github.io/code-reference/classes/WC-Product-Variable.html
Nguồn tham khảo: https://woocommerce.github.io/code-reference/classes/WC-Cart.html

Tags:

Bình luận

0 bình luận

  • Hãy là người đầu tiên để lại bình luận cho bài viết này!