-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathaddCustomOptions.php
81 lines (70 loc) · 2.93 KB
/
addCustomOptions.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<?php
require dirname(__FILE__) . '/app/bootstrap.php';
$bootstrap = \Magento\Framework\App\Bootstrap::create(BP, $_SERVER);
class Outslide extends \Magento\Framework\App\Http
implements \Magento\Framework\AppInterface {
public function launch()
{
$appState = $this->_objectManager->get('\Magento\Framework\App\State');
$appState->setAreaCode('adminhtml');
$productRepository = $this->_objectManager->create('Magento\Catalog\Api\ProductRepositoryInterface');
$optionFactory = $this->_objectManager->get('\Magento\Catalog\Model\Product\OptionFactory');
$productIds = [
10,
25
];
foreach ($productIds as $productId) {
try{
$_product = $productRepository->getById($productId);
$optionsArray = [
[
'title' => 'Select option',
'type' => 'drop_down',
'is_require' => 1,
'sort_order' => 1,
'values' => [
[
'title' => 'Option 1',
'price' => 10,
'price_type' => 'fixed',
'sku' => 'Option 1 sku',
'sort_order' => 1,
],
[
'title' => 'Option 2',
'price' => 10,
'price_type' => 'fixed',
'sku' => 'Option 2 sku',
'sort_order' => 2,
],
[
'title' => 'Option 3',
'price' => 10,
'price_type' => 'fixed',
'sku' => 'Option 3 sku',
'sort_order' => 3,
],
],
]
];
foreach ($optionsArray as $optionValue) {
$option = $optionFactory->create()->setProductId($_product->getId())
->setStoreId($_product->getStoreId())
->addData($optionValue);
$option->save();
$_product->addOption($option);
// must save product to add options in product
$productRepository->save($_product);
}
} catch (\Exception $e) {
echo $e->getMessage();
}
}
echo 'Done!';
//the method must end with this line
return $this->_response;
}
}
/** @var \Magento\Framework\App\Http $app */
$app = $bootstrap->createApplication('Outslide');
$bootstrap->run($app);