-
Notifications
You must be signed in to change notification settings - Fork 6
/
addInstallationOptions.php
67 lines (56 loc) · 2.28 KB
/
addInstallationOptions.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
<?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' => 'Installation',
'type' => 'checkbox',
'is_require' => 0,
'sort_order' => 1,
'values' => [
[
'title' => 'Yes',
'price' => 39,
'price_type' => 'fixed',
'sku' => 'installation',
'sort_order' => 1,
]
],
]
];
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);