Programmatically Assign Attribute to All Attribute Sets in Magento 2
I will put here the way to add an attribute group then assign an attribute into all attribute set with this group, please note I am using the dirty way to add it so you will need to follow the Dependency injection in your code to have the same result
$objectManager = $this->objectManager ; /* Attribute assign logic */ $eavSetup = $objectManager->create(\Magento\Eav\Setup\EavSetup::class); $config = $objectManager->get(\Magento\Catalog\Model\Config::class); $attributeManagement = $objectManager->get(\Magento\Eav\Api\AttributeManagementInterface::class); $entityTypeId = $eavSetup->getEntityTypeId(\Magento\Catalog\Model\Product::ENTITY); $attributeSetIds = $eavSetup->getAllAttributeSetIds($entityTypeId); $categorySetupFactory = $objectManager->get('\Magento\Catalog\Setup\CategorySetupFactory'); $setup = $objectManager->get('\Magento\Framework\Setup\ModuleDataSetupInterface'); $categorySetup = $categorySetupFactory->create(['setup' => $setup]); foreach ($attributeSetIds as $attributeSetId) { if ($attributeSetId) { $group_id = $config->getAttributeGroupId($attributeSetId, "Attributes"); if(!$group_id) { $categorySetup->addAttributeGroup( \Magento\Catalog\Model\Product::ENTITY, $attributeSetId, "Attributes", // attribute group name 17 // sort order ); //echo $attributeSetId . " - ".$group_id.'<br>'; $group_id = $config->getAttributeGroupId($attributeSetId, "Attributes"); } $attributeManagement->assign( 'catalog_product', $attributeSetId, $group_id, "{attribute_code}", 100 ); }