2017-08-19 7 views
2

J'ai besoin de montrer stock quantitise de chaque variation d'un produit variable dans WooCommerceObtenez la quantité de stock de chaque variation active dans les produits variables WooCommerce

J'utilise ce code pour montrer la quantité de stock:

<?php echo $product->get_stock_quantity(get_the_ID()); ?> 

Maintenant, j'ai ce produit:

Chemise a rouge, bleu pour variable produit.

"Red Shirt" has a stock quantity of 3
"Blue Shirt" has a stock quantity of 4

donc je dois montrer:

Blue = 3 // Red = 4

Comment puis-je faire?

+0

Votre question n'est pas très claire, pouvez-vous s'il vous plaît essayer de l'expliquer mieux? – Geoffrey

Répondre

2

Vous avez un produit variable avec différentes variations de couleur et de la quantité des stocks par variation.

Vous avez donc besoin d'obtenir pour chaque variation: - la quantité de stock de variation: - l'attribut « pa_color » nom du terme de cette variation

En supposant que vous obtenez déjà l'objet WC_Product_Variable$product, voici le code :

if ($product->is_type('variable')){ 

    // Get the available variations for the variable product 
    $available_variations = $product->get_available_variations(); 

    // Initializing variables 
    $variations_count = count($available_variations); 
    $loop_count = 0; 

    // Iterating through each available product variation 
    foreach($available_variations as $key => $values) { 
     $loop_count++; 
     // Get the term color name 
     $attribute_color = $values['attributes']['attribute_pa_color']; 
     $wp_term = get_term_by('slug', $attribute_color, 'pa_color'); 
     $term_name = $wp_term->name; // Color name 

     // Get the variation quantity 
     $variation_obj = wc_get_product($values['variation_id']); 
     $stock_qty = $variation_obj->get_stock_quantity(); // Stock qty 

     // The display 
     $separator_string = " // "; 
     $separator = $variations_count < $loop_count ? $separator_string : ''; 

     echo $term_name . ' = ' . $stock_qty . $separator; 
    } 

} 

This will exactly output something like (the color name "=" the stock quantity + separator):

Blue = 3 // Red = 4

testé et fonctionne parfaitement dans WooCommerce 3+

+0

Merci! Mais j'ai un problème! dans un autre produit, j'ai reçu cette erreur: ** Erreur fatale: Appel à la méthode non définie WC_Product_Simple :: get_available_variations() ** –

+0

@AlirezaDarvishi ** Mise à jour ma réponse: ** Vous avez juste besoin de filtrer avec 'if ($ product-> is_type ('variable')) {// le code} ' – LoicTheAztec

+0

Salut! Je ne peux pas montrer Bleu et Rouge. woocommerce besoin de toutes les options ou slug? –

0

Vous pouvez utiliser la fonction get_post_meta() pour obtenir des valeurs de la base de données.

Les valeurs de quantité en stock du produit sont stockées dans le tableau wp_postmeta.

$stock = get_post_meta($post->ID, '_stock', true); 
1

global $woocommerce, $product, $post; 
 
// test if product is variable 
 
if ($product->is_type('variable')) 
 
{ 
 
    $available_variations = $product->get_available_variations(); 
 
    foreach ($available_variations as $key => $variation) 
 
    { 
 
$variation_id = $variation['variation_id']; 
 
     $variation_obj = new WC_Product_variation($variation_id); 
 
     $stock = $variation_obj->get_stock_quantity(); 
 
    } 
 
}