Obtenga la cantidad de existencias de cada variación activa en los productos variables de WooCommerce

3 minutos de lectura

avatar de usuario
Alireza Darvisi

Necesito mostrar la cantidad de existencias de cada variación de un producto variable en Woocommerce

Utilizo este código para mostrar la cantidad de existencias:

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

Ahora tengo este producto:

La camisa tiene rojo, azul para producto variable.

“Camisa Roja” tiene una cantidad de existencias de 3

“Camisa Azul” tiene una cantidad de existencias de 4

entonces necesito mostrar:

Azul = 3 // Rojo = 4

¿Cómo puedo hacerlo?

  • Tu pregunta no está muy clara, ¿podrías tratar de explicarla mejor?

    – Geoffrey

    19 de agosto de 2017 a las 11:56


avatar de usuario
LoicTheAztec

Tienes productos variables con diferentes variaciones de color y cantidad de stock por variación.

Por lo tanto, debe obtener para cada variación: – la cantidad de existencias de la variación: – el nombre del término del atributo ‘pa_color’ para esta variación

Asumiendo que ya tienes el WC_Product_Variable objeto $productaquí está el código:

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

}

Esto generará exactamente algo como (el nombre del color “=” la cantidad de stock + separador):

Azul = 3 // Rojo = 4

Probado y funciona perfectamente en WooCommerce 3+

  • ¡Gracias! ¡Pero tengo un problema! en otro producto recibí este error: Error fatal: llamada al método no definido WC_Product_Simple::get_available_variations()

    – Alireza Darvisi

    19 de agosto de 2017 a las 20:25


  • @AlirezaDarvishi Actualicé mi respuesta: Solo necesitas filtrar con if ($product->is_type( 'variable' )){ // the code }

    – LoicTheAztec

    19 de agosto de 2017 a las 20:43


  • ¡Hola! No puedo mostrar azul y rojo. woocommerce necesita alguna opción o slug?

    – Alireza Darvisi

    12 de septiembre de 2017 a las 13:38

  • @AlirezaDarvishi Tengo respuesta en tu otra pregunta. Por favor, échale un vistazo. Para la salida de su tabla, tengo el código correcto.

    – LoicTheAztec

    12/09/2017 a las 17:52


  • ¿Dónde se colocaría este código para que funcione? ¿Qué archivo de plantilla?

    – rpeg

    15 de enero de 2018 a las 3:31

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

Puedes usar get_post_meta() función para obtener valores de la base de datos.

Los valores de cantidad de existencias de productos se almacenan en wp_postmeta mesa.

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

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad