Magento 2, Product with custom option used to allow customers to customize the product as per the need from a set of different Custom options.
The custom option is a native feature of Magento and you can add Custom option from Admin side in product Add/edit section.
If you want to get custom option’s value programmatically from Product, you need to use the below code in your module.
I did the code of custom option using Block file,
<?php namespace Rbj\CustomOption\Block; class CustomOption extends \Magento\Framework\View\Element\Template { public function __construct( \Magento\Framework\View\Element\Template\Context $context, \Magento\Catalog\Api\ProductRepositoryInterface $productRepository, \Magento\Catalog\Model\ResourceModel\Product\Option\CollectionFactory $optionCollection, array $data = [] ) { $this->productRepository = $productRepository; $this->optionCollection = $optionCollection; parent::__construct($context,$data); } public function getProductCustomOption($sku) { try { try { $product = $this->productRepository->get($sku); } catch (\Exception $exception) { throw new \Magento\Framework\Exception\NoSuchEntityException(__('Such product doesn\'t exist')); } $productOption = $this->optionCollection->create()->getProductOptions($product->getEntityId(),$product->getStoreId(),false); $optionData = []; foreach($productOption as $option) { $optionId = $option->getId(); $optionValues = $product->getOptionById($optionId); if ($optionValues === null) { throw \Magento\Framework\Exception\NoSuchEntityException::singleField('optionId', $optionId); } foreach($optionValues->getValues() as $values) { $optionData[] = $values->getData(); } } return $optionData; } catch (\Exception $exception) { throw new \Magento\Framework\Exception\NoSuchEntityException(__('Such product doesn\'t exist')); } return $product; } }
In the Template file, You need to do as below,
$sku = "24-MB05"; $product = $block->getProductCustomOption($sku); foreach ($product as $value) { echo $value['title'];echo "<br>"; //Option 1 echo $value['price'];echo "<br>"; // 10.0000 echo $value['sku'];echo "<br>"; //Option1_sku echo $value['sort_order'];echo "<br>"; // 1 }