Im trying to create product with custom option dropdown programatically but it doesnt work and throw error. Maybe somebody know how to do it, I we be glad to hear it. In my opinion this script work well with single field option but not for dropdown.
PHP Warning: Invalid argument supplied for foreach()
My script file at root directory
<?php
use Magento\Framework\App\Bootstrap;
require 'app/bootstrap.php';
$bootstrap = Bootstrap::create(BP, $_SERVER);
$objectManager = $bootstrap->getObjectManager();
$state = $objectManager->get('Magento\Framework\App\State');
$state->setAreaCode('frontend');
$objectManager = \Magento\Framework\App\ObjectManager::getInstance(); // instance of object manager
$product = $objectManager->create('\Magento\Catalog\Model\Product');
$product->setSku('watermelon'); // Set your sku here
$product->setName('Watermelon'); // Name of Product
$product->setAttributeSetId(4); // Attribute set id
$product->setStatus(1); // Status on product enabled/ disabled 1/0
$product->setWeight(10); // weight of product
$product->setVisibility(4); // visibilty of product (catalog / search / catalog, search / Not visible individually)
$product->setTaxClassId(0); // Tax class id
$product->setTypeId('simple'); // type of product (simple/virtual/downloadable/configurable)
$product->setPrice(19); // price of product
$product->setStockData(
array(
'use_config_manage_stock' => 0,
'manage_stock' => 1,
'is_in_stock' => 1,
'qty' => 29
)
);
$product->save();
$options = array(
"title" => "Insurance",
"type" => "drop_down",
"is_require" => 0,
"sort_order" => 10,
"additional_fields" => array(
array(
"title" => "Not necessary",
"price" => 0,
"price_type" => "fixed",
"sku" => "not_necessary",
"sort_order" => 0
),
array(
"title" => "1 Year",
"price" => 0,
"price_type" => "fixed",
"sku" => "one_year",
"sort_order" => 1
),
array(
"title" => "2 Years",
"price" => 0,
"price_type" => "fixed",
"sku" => "two_years",
"sort_order" => 2
),
array(
"title" => "3 Years",
"price" => 0,
"price_type" => "fixed",
"sku" => "three_years",
"sort_order" => 3
),
)
);
foreach ($options as $arrayOption) {
$product->setHasOptions(1);
$product->getResource()->save($product);
$option = $objectManager->create('\Magento\Catalog\Model\Product\Option')
->setProductId($product->getId())
->setStoreId($product->getStoreId())
->addData($arrayOption);
$option->save();
$product->addOption($option);
}