2015-05-28 21 views
8

Tôi đang phát triển một chủ đề cho wordpress và woocommerce.Cách nhận số lượng cổ phiếu của biến thể woocommerce

Tôi cần hiển thị cổ phiếu của biến thể.

<p class="stock-m13"><?php echo $product->get_stock_quantity(); ?></p> 

(ở đây: How to get the stock quantity of an article from woocommerce?) nhưng mã này chỉ hiển thị cho tôi số lượng cổ phiếu toàn cầu, không phải từng số lượng biến đổi.

Tôi cần một chức năng để có được số lượng biến thể? Hoặc có thể mã của tôi chưa hoàn thành (tôi nghĩ rằng vì tôi đã sử dụng hai mươi mười lăm chủ đề và số lượng biến thể được hiển thị)?

Tôi ước bạn có thể giúp tôi.

Cảm ơn bạn !!

UPDATE: Tôi cố gắng để có được số lượng tối đa với điều này:

<?php 
    foreach ($product->get_available_variations() as $key) { 
     echo $key['max_qty'] .'<br/>'; 
    } 
?> 

Và tôi nhận được nó, nhưng tôi không biết nếu điều này rất hữu ích khi các cổ phiếu đi xuống.

Trả lời

1

Ok, với điều này tôi có thể lấy số lượng. Nhưng không hữu ích.

Với điều này tôi có thể chuẩn bị một mã mà làm cho differents câu, một cho mỗi sản phẩm, và hiển thị nó khi một biến thể sẽ được lựa chọn sử dụng jquery.

Nhưng đây không phải là ý tưởng hay. Không thanh lịch. tôi dù tồn tại một cái gì đó giống như

$product->get_variation_price() 

mã trở lại này giá dao động khi được chọn. Nhưng

$product->get_stock_quantity(); 

không thay đổi khi biến thể được chọn vì hiển thị cho tôi chứng khoán toàn cầu.

ai đó có thể cho tôi một giải pháp thanh lịch? Hoặc không tồn tại?

CẬP NHẬT

Cuối cùng tôi đã sử dụng

$product->get_available_variations() 

Để có được dữ liệu.

Với mã html này, tôi đã tạo, ẩn với css và tôi hiển thị nó khi tôi nhấp vào màu của biến thể.

2

Vâng, theo cách của bạn là cách chính xác để lấy cổ phiếu của một biến thể.

Chừng nào bạn đang nhận được các biến thể tươi từ các cơ sở dữ liệu mỗi khi bạn cần phải sử dụng số lượng cổ phiếu của nó thì bạn sẽ không sao với việc sử dụng phương pháp này.

******* CẬP NHẬT

Tôi không chắc mình hiểu những gì bạn đang cố gắng làm. Bạn chỉ cần có thể lấy cả hai cổ phiếu biến thể và gửi chúng qua jquery để chơi với.

$product_variable = new WC_Product_Variable($product->id); 
$product_variations = $product_variable->get_available_variations(); 

foreach ($product_variations as $variation) { 
    $stock[$variation['attribute_pa_variation-name']] = $variation['max_qty']; 
} 

Ở đây tôi đang gán mức cổ phiếu để một mảng kết hợp với attribute_pa_ "của bạn thuộc tính-name" là chìa khóa

Bây giờ tôi có thể gửi mảng của tôi giao cho jQuery.

Xin làm rõ nếu tôi mis-hiểu câu hỏi.

1

Cho một sản phẩm biến với nhiều biến thể để có được mỗi số lượng cổ phiếu biến động:

function get_stock_variations_from_product(){ 
    global $product; 
    $variations = $product->get_available_variations(); 
    foreach($variations as $variation){ 
     $variation_id = $variation['variation_id']; 
     $variation_obj = new WC_Product_variation($variation_id); 
     $stock = $variation_obj->get_stock_quantity(); 
    } 
} 

Đây là cách sạch nhất tôi đã tìm ra cho WC 2.5, tôi nghĩ rằng có thể có những cách tốt hơn về hiệu suất nhưng không sạch sẽ.

1

Mã bên dưới sẽ in tất cả thuộc tính với biến 'is_in_stock'.

<?php 
    global $product; 
    $product_variations = $product->get_available_variations(); 

    foreach ($product_variations as $variation) { 
     $var_data = $variation['attributes']; 
     $var_data['in_stock'] = $variation['is_in_stock']; 
    } 

    //List all attributes with stock available or not array.. 
    echo '<pre>'; 
    print_r($var_data); 
    echo '</pre>'; 
    die; 
?> 
Các vấn đề liên quan