Якщо у вас є атрибут продукту, і ви хочете призначити його одному набору атрибутів, це легко зробити через Панель адміністратора Magento 2 > Сховища > Атрибути > Набір атрибутів .
Але що робити, якщо вам потрібно призначити його всім вашим наборам атрибутів? Що робити, якщо у вас є 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 або зробіть його недоступним в Інтернеті.