To create custom field in custom options , you need to complete the following steps:
Step 1: Create the etc/adminhtml/di.xml file
Step 2: Create Tridhyatech/CustomOptions/Plugin/Catalog/Ui/DataProvider/Product/Form/Modifier/CustomOptions.php file
Step 3: Create InstallSchema file
Step 4: Enable the module
1.) create di.xml file in Tridhyatech/CustomOptions/etc/adminhtml/di.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<type name="Magento\Catalog\Ui\DataProvider\Product\Form\Modifier\CustomOptions">
<plugin name="tridhyatech_custom_option" type="Tridhyatech\CustomOption\Plugin\Catalog\Ui\DataProvider\Product\Form\Modifier\CustomOptions" sortOrder="1"/>
</type>
</config>
2.) create plugin Tridhyatech/CustomOption/Plugin/Catalog/Ui/DataProvider/Product/Form/Modifier/CustomOptions.php
namespace Tridhyatech\CustomOption\Plugin\Catalog\Ui\DataProvider\Product\Form\Modifier;
class CustomOptions
{
public function afterModifyMeta(
\Magento\Catalog\Ui\DataProvider\Product\Form\Modifier\CustomOptions $subject,
$meta
) {
$meta['custom_options']['children']['options']['children']['record']['children']['container_option']['children']['container_common']['children']['custom_text'] =
$this->getTitleFieldConfig(
200,
[
'arguments' => [
'data' => [
'config' => [
'label' => __('Custom Text'),
'component' => 'Magento_Catalog/component/static-type-input',
'valueUpdate' => 'input',
'imports' => [
'optionId' => '${ $.provider }:${ $.parentScope }.option_id'
]
],
],
],
]
);
return $meta;
}
/**
* Get config for "Title" fields
*
* @param int $sortOrder
* @param array $options
* @return array
*/
protected function getTitleFieldConfig($sortOrder, array $options = [])
{
return array_replace_recursive(
[
'arguments' => [
'data' => [
'config' => [
'label' => __('Custom Text'),
'componentType' => \Magento\Ui\Component\Form\Field::NAME,
'formElement' => \Magento\Ui\Component\Form\Element\Input::NAME,
'dataScope' => 'custom_text',
'dataType' => \Magento\Ui\Component\Form\Element\DataType\Text::NAME,
'sortOrder' => $sortOrder,
'validation' => [
'required-entry' => false
],
],
],
],
],
$options
);
}
}
3.) Create InstallSchema.php File
namespace Tridhyatech\CustomOption\Setup;
use Magento\Framework\Setup\InstallSchemaInterface;
use Magento\Framework\Setup\ModuleContextInterface;
use Magento\Framework\Setup\SchemaSetupInterface;
use Magento\Framework\DB\Ddl\Table;
class InstallSchema implements InstallSchemaInterface
{
public function install(SchemaSetupInterface $setup, ModuleContextInterface $context)
{
$setup->startSetup();
$setup->getConnection()->addColumn(
$setup->getTable('catalog_product_option'),
'custom_text',
[
'type' => Table::TYPE_TEXT,
'nullable' => true,
'default' => null,
'comment' => 'CustomText',
]
);
$setup->endSetup();
}
}
4.) Run below command :
php bin/magento s:up
php bin/magento s:s:d -f
php bin/magento c:f


