Magento 2 CMS has a powerful feature of product attributes. It is a property of a product that describes the product more specifically. For example, price, color, weight, etc.
One can create a product attribute in Magento 2 or use the default attribute of Magento 2.
The admin can update product attributes in bulk in Magento 2 or do it programmatically with the method given here.
Update product attribute value programmatically in Magento 2 when, for instance, there is a price change, offer discounts, change product labels, etc., using the below method.
Steps to Update Product Attribute Value Programmatically in Magento 2
Create Data.php file at Vendor\Extension\Helper and use the below code.
<?php
namespace Vendore\Extension\Helper;
use Magento\Catalog\Model\Product\Action as ProductAction;
use Magento\Catalog\Model\ResourceModel\Product\CollectionFactory;
use Magento\Framework\App\Helper\AbstractHelper;
use Magento\Framework\App\Helper\Context;
use Magento\Store\Model\StoreManagerInterface;
class Data extends AbstractHelper
{
protected $messageManager;
private $productCollection;
private $productAction;
private $storeManager;
public function __construct(
Context $context,
CollectionFactory $collection,
ProductAction $action,
StoreManagerInterface $storeManager
)
{
$this->productCollection = $collection;
$this->productAction = $action;
$this->storeManager = $storeManager;
parent::__construct($context);
}
public function setAttributeData($value)
{
try {
$collection = $this->productCollection->create()->addFieldToFilter('*');
$storeId = $this->storeManager->getStore()->getId();
$ids = [];
$i = 0;
foreach ($collection as $item) {
$ids[$i] = $item->getEntityId();
$i++;
}
$this->productAction->updateAttributes($ids, array('attribute_code' => $value), $storeId);
} catch (\Exception $e) {
$this->messageManager->addError($e->getMessage());
}
}
}
Here, pass the updated value to $value.
That’s all!
Feel free to share the solution with Magento community via social media.
Thank You.