Cómo obtener valores de variación de productos de WooCommerce

3 minutos de lectura

Quiero poder enumerar los valores de las opciones de variación. Por ejemplo, tengo una linterna que viene en 12, 14 y 16 pulgadas. Quiero poder obtener estos valores. He estado tratando de usar el bucle foreach para obtener estos valores, pero necesito un poco de ayuda. aquí está mi código;

function test_func(){
    global $woocommerce, $product, $post;
    // test if product is variable
    if( $product->is_type( 'variable' ) ){
        $available_variations = $product->get_available_variations();
        // var_dump($available_variations);

        foreach( $available_variations as $key => $value ){ 
            var_dump( $value['attributes'] ) ;
        }
    }
}

Esto es lo que sale:

array(1) { ["attribute_pa_size"]=> string(4) "12in" } array(1) { ["attribute_pa_size"]=> string(4) "14in" } array(1) { ["attribute_pa_size"]=> string(4) "16in" }

Como puede ver, los valores que quiero están ahí, pero no sé cómo hacer que se hagan eco de ellos.

Esto es lo que obtengo si var_dump() $variaciones_disponibles;

” [“backorders_allowed”]=> booleano(falso) [“dimensions”]=> matriz(3) { [“length”]=> cadena (4) “11.8” [“width”]=> cadena (4) “11.8” [“height”]=> cadena(4) “11.8” } [“dimensions_html”]=> cadena(21) “11,8 x 11,8 x 11,8 pulgadas” [“display_price”]=> flotar(3.2) [“display_regular_price”]=> flotar(3.2) [“image”]=> matriz(18) { [“title”]=> cadena(11) “6712R-1.jpg” [“caption”]=> cadena (0) “” [“url”]=> cadena(59) “http://sitioweb/wp-content/uploads/2018/10/6712R-1.jpg” [“alt”]=> cadena (0) “” [“src”]=> cadena(67) “http://sitioweb/wp-content/uploads/2018/10/6712R-1-600×600.jpg” [“srcset”]=> cadena (445) “http://sitioweb/wp-content/uploads/2018/10/6712R-1-600×600.jpg 600w, http://sitioweb/wp-content/uploads/2018/10/6712R-1-150×150.jpg 150w, http://sitioweb/wp-content/uploads/2018/10/6712R-1-300×300.jpg 300w, http://sitioweb/wp-content/uploads/2018/10/6712R-1-768×768.jpg 768w, http://sitioweb/wp-content/uploads/2018/10/6712R-1-1024×1024.jpg 1024w, http://sitioweb/wp-content/uploads/2018/10/6712R-1-100×100.jpg 100w” [“sizes”]=> string(31) “(ancho máximo: 600px) 100vw, 600px” [“full_src”]=> cadena(59) “http://sitioweb/wp-content/uploads/2018/10/6712R-1.jpg” [“full_src_w”]=> int(2000) [“full_src_h”]=> int(2000) [“gallery_thumbnail_src”]=> cadena(67) “http://sitioweb/wp-content/uploads/2018/10/6712R-1-100×100.jpg” [“gallery_thumbnail_src_w”]=> int(100) [“gallery_thumbnail_src_h”]=> int(100) [“thumb_src”]=> cadena(67) “http://sitioweb/wp-content/uploads/2018/10/6712R-1-300×300.jpg” [“thumb_src_w”]=> int(300) [“thumb_src_h”]=> int(300) [“src_w”]=> int(600) [“src_h”]=> int(600) } [“image_id”]=> cadena (3) “164” [“is_downloadable”]=> booleano(falso) [“is_in_stock”]=> booleano(verdadero) [“is_purchasable”]=> booleano(verdadero) [“is_sold_individually”]=> cadena(2) “no” [“is_virtual”]=> booleano(falso) [“max_qty”]=> int(17) [“min_qty”]=> int(1) [“price_html”]=> cadena(145) “

” [“sku”]=> cadena(5) “6712R” [“variation_description”]=> cadena (0) “” [“variation_id”]=> int(1462) [“variation_is_active”]=> booleano(verdadero) [“variation_is_visible”]=> booleano(verdadero) [“weight”]=> cadena (0) “” [“weight_html”]=> cadena(3) “N/A” } [1]=> matriz(24) { [“attributes”]=> matriz(1) { [“attribute_pa_size”]=> cadena(4) “14in” } [“availability_html”]=> cadena(51) “

Esto es solo para un producto, hay uno para cada variación, pero esto te da una idea de cómo funciona. También estoy abierto a probar otro método para obtener los mismos resultados, así que si conoces uno, házmelo saber. Gracias

Debe usar un segundo bucle foreach para los atributos del producto:

function test_func(){
    global $woocommerce, $product, $post;
    // test if product is variable
    if( $product->is_type( 'variable' ) ){
        // Loop through available product variation data
        foreach ( $product->get_available_variations() as $key => $variation ) {
            // Loop through the product attributes for this variation
            foreach ($variation['attributes'] as $attribute => $term_slug ) {
                // Get the taxonomy slug
                $taxonmomy = str_replace( 'attribute_', '', $attribute );

                // Get the attribute label name
                $attr_label_name = wc_attribute_label( $taxonmomy );

                // Display attribute labe name
                $term_name = get_term_by( 'slug', $term_slug, $taxonmomy )->name;

                // Testing output
                echo '<p>' . $attr_label_name . ': ' . $term_name . '</p>';
            }
        }
    }
}

  • ¿Cómo podría obtener la descripción de la variación del producto? Me refiero a la descripción dentro de la variación y no a la descripción principal del producto.

    – Tyra Pululi

    26 de septiembre de 2019 a las 7:36

  • Para mí, el valor que necesito es solo $term_slug. $term_name esta vacio.

    – Infinito cúbico

    19 de diciembre de 2021 a las 6:20

¿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