Obtenga todas las variaciones de un producto dada su ID en Woocommerce

2 minutos de lectura

Tengo una página personalizada en la que trato de enumerar todos los productos de la tienda junto con sus variaciones.

Además, estoy tratando de enumerar los precios de las variaciones ordenados por el atributo del producto con slug ‘tamaño’

Para la prueba, estoy tratando de obtener las variaciones de un solo producto con el ID 381 Mi código todavía es

    $handle=new WC_Product('381');
    $variations1=$handle->get_avaialable_variations();
    foreach ($variations1 as $key => $value) {
            echo '<option  value="'.$value['variation_id'].'">'.implode("https://stackoverflow.com/",$value['attributes']).'-'.$value['price_html'].'</option>';

    }

Pero el error que estoy recibiendo es

PHP Fatal error:  Call to undefined method WC_Product::get_avaialable_variations() 

Traté de usar

$handle=new WC_Product_Variable('381');

en vez de

 $handle=new WC_Product('381'); 

Pero el error es el mismo.

¿Alguna ayuda aquí?

avatar de usuario
Dominio

Prueba este código.

$handle=new WC_Product_Variable('12');
$variations1=$handle->get_children();
foreach ($variations1 as $value) {
    $single_variation=new WC_Product_Variation($value);
    echo '<option  value="'.$value.'">'.implode(" / ", $single_variation->get_variation_attributes()).'-'.get_woocommerce_currency_symbol().$single_variation->price.'</option>';
}

Nota: Utilice esta $single_variation->get_price_html() pero sus salidas con la etiqueta html span, lo que hace que se oculte en las etiquetas de opciones.

Probé el código anterior y los resultados son los siguientes.

Déjame saber si eso funcionó para ti también.

ingrese la descripción de la imagen aquí

Tuviste un error tipográfico en tu código – get_avaialable_variations

Debería ser get_available_variations

function get_variation_data_from_variation_id($item_id) {

    $_product = new WC_Product_Variation($item_id);
    $variation_data = $_product->get_variation_attributes(); // variation data in array
    $variation_detail = woocommerce_get_formatted_variation($variation_data, true);  // this will give all variation detail in one line
    // $variation_detail = woocommerce_get_formatted_variation( $variation_data, false);  // this will give all variation detail one by one
    return $variation_data; // $variation_detail will return string containing variation detail which can be used to print on website
    // return $variation_data; // $variation_data will return only the data which can be used to store variation data
}

Encontré esto antes en stackoverflow no podía recordar el enlace (edítelo si encuentra el enlace a la respuesta con este método). muestra los datos de variación para la salida. el método toma la identificación de la variación como parámetro.

producción:

ingrese la descripción de la imagen aquí.

¿Ha sido útil esta solución?