0

I built this array with enough data to create the variables This is the array:

array:3 [▼
  174476439607 => array:2 [▼
    "precio" => 130.0
    "atributos" => array:2 [▼
      "COLOR" => "Marrón"
      "SIZE" => "S"
    ]
  ]
  174476439611 => array:2 [▼
    "precio" => 130.0
    "atributos" => array:2 [▼
      "COLOR" => "Marrón"
      "SIZE" => "2XL"
    ]
  ]
  174537548878 => array:2 [▼
    "precio" => 130.0
    "atributos" => array:2 [▼
      "COLOR" => "Chocolate"
      "SIZE" => "2XL"
    ]
  ]
]

How would you take that data and add it to the product as your variables?

The parent product id is obtained from this variable

$objProduct->get_id() result 19289

I have this code but it doesn't seem to work.

    $variation = new \WC_Product_Variation();
    $variation->set_parent_id($objProduct->get_id()); // Set parent ID
    //$variation->set_regular_price(null); // Set price
    $variation->set_price($nikopreciovaraible); // Set price
    // Enable and set stock
        $variation->set_manage_stock(false);
        //$variation->set_stock_quantity($variation_data['quantity']);
        $variation->set_stock_status('instock');
    $attributes      = array(); // Initializing
    $attribute_names = (array) $color;
    $attribute_terms = (array) $talla;
    // Formatting attributes data array
    foreach( $attribute_names as $key => $attribute_name ){
        $attributes[sanitize_title($attribute_name)] = $attribute_terms[$key];
    }
    $variation->set_attributes($attributes); // Set attributes
    dd($variation);
    $variation_id = $variation->save(); // Save to database (return the variation Id)

this is how i'm doing it

        foreach ($datastore as $createvariablesniko) {
        $nikopreciovaraible = $createvariablesniko[precio];
        $color = $createvariablesniko['atributos'][COLOR];
        $talla = $createvariablesniko['atributos'][SIZE];
//finalmetida de productos

    $variation = new \WC_Product_Variation();
    $variation->set_parent_id($objProduct->get_id()); // Set parent ID
    //$variation->set_regular_price(null); // Set price
    $variation->set_price($nikopreciovaraible); // Set price
    // Enable and set stock
        $variation->set_manage_stock(false);
        //$variation->set_stock_quantity($variation_data['quantity']);
        $variation->set_stock_status('instock');
    $attributes      = array(); // Initializing
    $attribute_names = (array) $color;
    $attribute_terms = (array) $talla;
    // Formatting attributes data array
    foreach( $attribute_names as $key => $attribute_name ){
        $attributes[sanitize_title($attribute_name)] = $attribute_terms[$key];
    }
    $variation->set_attributes($attributes); // Set attributes
    //dd($variation);
    $variation_id = $variation->save(); // Save to database (return the variation Id)

get the 3 variables added but with blank content in woocommerce admin. https://i.imgur.com/TuUFIJp.png

Club
  • 111
  • 1
  • 8
  • This problem has been solved here some time ago. https://stackoverflow.com/questions/47518333/create-programmatically-a-variable-product-and-two-new-attributes-in-woocommerce/47844054#47844054 – Manuel Glez Jun 13 '22 at 01:13
  • I tried but it doesn't work for me. – Club Jun 13 '22 at 01:30

0 Answers0