Якщо у вас є атрибут продукту і ви хочете призначити його якомусь набору атрибутів, це легко зробити за допомогою адмін панелі Magento 2 Admin Panel > Stores > Attributes > Attribute Set.
Але що, якщо вам потрібно призначити його всім вашим наборам атрибутів? Що робити, якщо у вас їх 50+ або більше 100? Це може зайняти деякий час.
Отже, що ви можете зробити, це створити простий скрипт, який зробить всю роботу за вас.
1. Створіть PHP-файл "myscript.php" у своєму кореневому каталозі Magento 2.
2. Вставте цей код:
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
$ATTRIBUTE_CODE = 'my_attribute';
$ATTRIBUTE_GROUP = 'General';
use Magento\Framework\App\Bootstrap;
require __DIR__ . '/app/bootstrap.php';
$bootstrap = Bootstrap::create(BP, $_SERVER);
$objectManager = $bootstrap->getObjectManager();
$state = $objectManager->get(Magento\Framework\App\State::class);
$state->setAreaCode('adminhtml');
/* 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);
foreach ($attributeSetIds as $attributeSetId) {
if ($attributeSetId) {
$group_id = $config->getAttributeGroupId($attributeSetId, $ATTRIBUTE_GROUP);
$attributeManagement->assign(
'catalog_product',
$attributeSetId,
$group_id,
$ATTRIBUTE_CODE,
999
);
}
}
3. Змініть значення для $ATTRIBUTE_CODE та $ATTRIBUTE_GROUP.
4. Збережіть файл.
5. Запустіть CLI команду:
php myscript.php
6. Після завершення видаліть файл myscript.php або зробіть його недоступним з Інтернету.