Skip to main content

Create custom option programmatically in magento2

Create test.php file magento2 root directory and copy below code
<?php
echo '<pre>';
error_reporting(0);
ini_set('display_errors', 1);

use Magento\Framework\App\Bootstrap;

include('app/bootstrap.php');
$bootstrap = Bootstrap::create(BP, $_SERVER);
$objectManager = $bootstrap->getObjectManager();
$url = \Magento\Framework\App\ObjectManager::getInstance();
$storeManager = $url->get('\Magento\Store\Model\StoreManagerInterface');
$websiteId = $storeManager->getWebsite()->getWebsiteId();
$state = $objectManager->get('\Magento\Framework\App\State');
$state->setAreaCode('frontend');

$writer = new \Zend\Log\Writer\Stream(BP . '/var/log/importmissingorders.log');
$logger = new \Zend\Log\Logger();
$logger->addWriter($writer);
//die("here");
$productId = 2;
$product = $objectManager->create('\Magento\Catalog\Model\Product')->load($productId);
$values = [
            [
                'record_id'=>0,                                       
                'title'=>'Red',
                'price'=>10,
                'price_type'=>"fixed",
                'sort_order'=>1,
                'is_delete'=>0
            ],
            [
                'record_id'=>1,                   
                'title'=>'White',
                'price'=>10,
                'price_type'=>"fixed",
                'sort_order'=>1,
                'is_delete'=>0
            ],
            [
                'record_id'=>2,                   
                'title'=>'Black',
                'price'=>10,
                'price_type'=>"fixed",
                'sort_order'=>1,
                'is_delete'=>0
            ]
        ];
$options = [
           [
                "sort_order"    => 2,
                "title"         => "Color",
                "price_type"    => "fixed",
                "price"         => "",
                "type"          => "drop_down",
                "is_require"    => 0,
                "values"        => $values
            ]
        ];
         
        $product->setHasOptions(1);
        $product->setCanSaveCustomOptions(true);
        foreach ($options as $arrayOption) {
            $option = $objectManager->create('\Magento\Catalog\Model\Product\Option')
                    ->setProductId($productId)
                    ->setStoreId($product->getStoreId())
                    ->addData($arrayOption);
            $option->save();
            $product->addOption($option);
        }
     
?>

after saving the file excute domain.com/test.php

Comments

Popular posts from this blog

magento 1 extension converted in to magento 2 process

Simple Install =================================== Download as a zip below link. unzip and upload it to your public_html or other rootdoc directory. https://github.com/magento/code-migration. login to your server via shell switch to the code-migration-develop directory by running following command   cd code-migration-develop Run command following command in root directory of this toolkit composer instal Before running the migration, the following directories need to be prepared: ===================================== * `<src>` - Directory that contains custom Magento 1.x code that is intended to be migrated. The code must follow the Magento 1.x directory structure.   Magento1.x core files must not be included. * `<dst>` - Empty directory for the toolkit to put the generated Magento 2 code to * `<m1>` - Directory that contains: * Vanilla Magento 1.x codebase, and * Custom Magento 1.x code same as...

Magento 2 product collection Filtering multi-select attribute values

  If you have multi-select attribute of product like below If you want filter value for this option Use below syntax to get product data: ->addAttributeToFilter('store_model', array('finset' => $params['store_model'])) finset key is used for multiselect attribute filter. $objectManager = \Magento\Framework\App\ObjectManager::getInstance(); $products = $objectManager->get('Magento\Catalog\Model\Product')         ->getCollection()         ->addAttributeToSelect('*')         ->addAttributeToSelect('store_brand')         ->addAttributeToSelect('store_model')         ->addAttributeToSelect('store_year')         ->addAttributeToFilter('store_brand', array('finset' => $params['store_brand']))         ->addAttributeToFilter('store_model', array('finset' => $params['store_model']))         ->ad...

Magento Debug HEADERS ALREADY SENT error

When you  receiving the following error in  system.log file: app\code\core\Mage\Core\Controller\Response\Http.php:44  [1] \www.pawan.com\lib\Zend\Controller\Response\Abstract.php:727  [2]  \www.pawan.com\app\code\core\Mage\Core\Controller\Response\Http.php:75  [3]  \www.pawan.com\app\code\core\Mage\Core\Controller\Varien\Front.php:188  [4]  \www.pawan.com\app\code\core\Mage\Core\Model\App.php:304  [5]  \www.pawan.com\app\Mage.php:596  [6]  \www.pawan.com\index.php:81 if you have no idea what file is causing this. Here is the steps to debug. That error is thrown from Mage_Core_Controller_Response_Http -> sendHeaders(). This function calls the super class function that actually does the check to see whether or not headers have already been sent, Zend_Controller_Response_Abstract -> canSendHeaders(). The Zend_Controller_Response_Abstract class handles, among other things, sending response header...