Reading list Switch to dark mode

    How To Create Custom Product Attribute Set From DataPatch Installer In Magento 2

    Updated 28 February 2024

    How To Create Custom Product Attribute Set From DataPatch Installer In Magento 2- Here I am going to explain you how to create custom product attribute set from dataPatch installer. If you want to create a custom product attribute set then create a file “AddCustomAttributeSet.php” in Vendor\CustomModule\Setup\Patch\Data and then add following code snippet.

    <?php
    
    namespace Vendor\ModuleName\Setup\Patch\Data;
    
    use Magento\Framework\Setup\ModuleDataSetupInterface;
    use Magento\Framework\Setup\Patch\DataPatchInterface;
    use Magento\Eav\Model\Entity\Attribute\SetFactory as AttributeSetFactory;
    use Magento\Catalog\Setup\CategorySetupFactory;
    
    class AddCustomAttributeSet implements DataPatchInterface
    {
        /**
         * @var ModuleDataSetupInterface
         */
        private $moduleDataSetup;
    
        /**
         * @var AttributeSetFactory
         */
        private $attributeSetFactory;
    
        /**
         * @var CategorySetupFactory
         */
        private $categorySetupFactory;
    
        /**
         * @param ModuleDataSetupInterface $moduleDataSetup
         * @param AttributeSetFactory $attributeSetFactory
         * @param CategorySetupFactory $categorySetupFactory
         */
        public function __construct(
            ModuleDataSetupInterface $moduleDataSetup,
            AttributeSetFactory $attributeSetFactory,
            CategorySetupFactory $categorySetupFactory
        ) {
            $this->moduleDataSetup = $moduleDataSetup;
            $this->attributeSetFactory = $attributeSetFactory;
            $this->categorySetupFactory = $categorySetupFactory;
        }
    
        /**
         * @inheritdoc
         */
        public function apply()
        {
            $setup = $this->moduleDataSetup;
            $setup->startSetup();
            $categorySetup = $this->categorySetupFactory->create(['setup' => $setup]);
            $attributeSet = $this->attributeSetFactory->create();
            $entityTypeId = $categorySetup->getEntityTypeId(\Magento\Catalog\Model\Product::ENTITY);
            $attributeSetId = $categorySetup->getDefaultAttributeSetId($entityTypeId); // Default attribute set Id
            $data = [
                'attribute_set_name' => 'Custom_Product_attribute_set', // custom attribute set name
                'entity_type_id' => $entityTypeId,
                'sort_order' => 50,
            ];
            $attributeSet->setData($data);
            $attributeSet->validate();
            $attributeSet->save();
            $attributeSet->initFromSkeleton($attributeSetId)->save(); // based on default attribute set
        }
    
        /**
         * @inheritdoc
         */
        public static function getDependencies()
        {
            return [];
        }
    
        /**
         * @inheritdoc
         */
        public function getAliases()
        {
            return [];
        }
    }

    Now in this way you can create custom product attribute set.

    Searching for an experienced
    Magento 2 Company ?
    Find out More
    . . .

    Leave a Comment

    Your email address will not be published. Required fields are marked*


    Be the first to comment.

    Back to Top

    Message Sent!

    If you have more details or questions, you can reply to the received confirmation email.

    Back to Home