2015-05-28 11 views
8

Ich entwickle ein Thema für WordPress und Woocommerce.Wie bekomme ich die Variation Menge Lager Woocommerce

Ich brauche den Vorrat der Showvariation.

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

(hier: How to get the stock quantity of an article from woocommerce?), aber dieser Code zeigt mir nur die globale Bestandsmenge, nicht jede Variation Menge.

Ich brauche eine andere Funktion, um die Variationsmenge zu erhalten? Oder es ist möglich, dass mein Code nicht abgeschlossen ist (ich denke es, weil ich Twenty Fifteen Thema und Variation Menge verwendet wurde gezeigt)?

Ich wünsche, dass Sie mir helfen können.

Vielen Dank !!

UPDATE: Ich versuche, mit dieser Höchstmenge zu erhalten:

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

Und ich es bekommen, aber ich weiß nicht, ob dies sinnvoll ist, wenn die Aktie nach unten geht.

Antwort

1

Ok, damit kann ich die Menge nehmen. Aber ist nicht nützlich.

Mit diesem kann ich einen Code vorbereiten, der unterschiedliche Sätze, einen für jedes Produkt, macht, und es zeigen, wenn eine Abweichung ausgewählt würde, die jquery verwendet.

Aber das ist keine gute Idee. Ist nicht elegant. ich existierte, obwohl so etwas wie

$product->get_variation_price() 

Dieser Code Rückkehr der Variations Preis, wenn gewählt wird. Aber

$product->get_stock_quantity(); 

nicht ändern, wenn Variation gewählt, weil ich zeigen die globalen Aktien.

Kann mir jemand eine elegante Lösung geben? Oder nicht existiert?

UPDATE

Schließlich habe ich

$product->get_available_variations() 

Um die Daten zu erhalten.

Mit diesem habe ich HTML-Code generiert, mit CSS versteckt, und ich zeige es, wenn ich auf Variationsfarbe klicke.

2

Ja, Ihr Weg ist der richtige Weg, den Vorrat einer Variation zu ergattern.

Solange Sie die Variationen jedes Mal aus der Datenbank erhalten, wenn Sie ihre Lagermenge verwenden müssen, sollten Sie mit dieser Methode einverstanden sein.

******* UPDATEED

Ich bin mir nicht sicher, ob ich verstehe, was Sie zu tun versuchen. Sie sollten einfach in der Lage sein, beide Variation Aktien zu greifen und sie an jQuery zu senden, um damit zu spielen.

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

Hier bin ich die Zuweisung Bestand auf ein assoziatives Array mit attribute_pa_ „your-Attribut-name“ als Schlüssel

Jetzt kann ich meine Array über jQuery senden.

Bitte klären Sie, ob ich die Frage falsch verstanden habe.

1

ein variables Produkt mit mehreren Variationen gegeben, um jede Variation Bestandsmenge zu erhalten:

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

Dies ist der sauberste Weg ich für 2,5 WC herausgefunden, ich denke, es gibt bessere Möglichkeiten in Bezug auf die Leistung sein könnte aber nicht so sauber.

1

Der folgende Code wird alle Attribute mit 'is_in_stock' Variable drucken.

<?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; 
?> 
Verwandte Themen