2015-05-28 28 views
8

Zajmuję się tematyką dla wordpress i woocommerce.Jak uzyskać zmienną ilość zapasów woocommerce

Potrzebuję zapasów pokazu.

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

(tutaj: How to get the stock quantity of an article from woocommerce?), ale ten kod tylko pokazać mi globalną ilość akcji, a nie każdej ilości zmienność.

Potrzebuję innej funkcji, aby uzyskać wariację ilościową? Czy jest możliwe, że mój kod nie jest kompletny (myślę, że wykorzystałem motyw Twenty Piętnastki i pokazano ilość zmian)?

Życzę, że możesz mi pomóc.

Dziękuję!

UPDATE: Staram się uzyskać maksymalną ilość z tym:

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

I dostać, ale nie wiem, czy to jest przydatne, gdy czas idzie w dół.

Odpowiedz

1

Ok, z tym mogę wziąć ilość. Ale nie jest przydatne.

Dzięki temu mogę przygotować kod, który składa się z różnych zdań, po jednym dla każdego produktu i pokazać go, gdy wybrano odmianę za pomocą jquery.

Ale to nie jest dobry pomysł. Nie jest elegancko. I choć istniało coś takiego

$product->get_variation_price() 

Ten powrót Kod cena odmiana po wybraniu. Ale

$product->get_stock_quantity(); 

nie zmienia się, gdy jest wybrana odmiana bo mi pokazać globalne zapasy.

Czy ktoś może dać mi eleganckie rozwiązanie? Albo nie istnieje?

UPDATE

końcu użyłem

$product->get_available_variations() 

Aby uzyskać dane.

Z tym wygenerowałem kod HTML ukryty za pomocą css i pokazuję go po kliknięciu koloru odmiany.

2

Tak, twoja droga to właściwy sposób na pobranie odmiany.

Dopóki otrzymujesz świeże odmiany z bazy danych za każdym razem, gdy potrzebujesz użyć ich ilości magazynowej, powinieneś być w porządku z użyciem tej metody.

******* UPDATEED

Nie jestem pewien, czy rozumiem, co próbujesz zrobić. Powinieneś być w stanie pobrać oba wariacje i wysłać je do jquery, aby grać.

$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']; 
} 

Tutaj jestem przypisanie poziomu zapasów do tablicy asocjacyjnej z attribute_pa_ „atrybut nazwa-twojej” jako kluczowy

Teraz mogę wysłać moją tablicę na jQuery.

Proszę wyjaśnić, czy źle rozumiem pytanie.

1

Biorąc pod uwagę zmienną produkt z wieloma odmianami w celu uzyskania każdą ilość zmienność magazynie:

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(); 
    } 
} 

Jest to najczystszy sposób zorientowali się do WC 2,5, myślę, że mogłyby być lepsze sposoby pod względem wydajności ale nie tak czysty.

1

Poniższy kod wyświetli wszystkie atrybuty ze zmienną "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; 
?> 
Powiązane problemy