Magento2如何以编程方式更新产品信息(PHP脚本)?
我试图按产品id更新所有产品信息,但对所有信息都不起作用。使用下面的代码“SKU”成功更新,但无法更新其他信息,如产品名称和其他自定义属性值 如何使用PHP脚本更新有关产品的所有信息Magento2如何以编程方式更新产品信息(PHP脚本)?,php,magento2,Php,Magento2,我试图按产品id更新所有产品信息,但对所有信息都不起作用。使用下面的代码“SKU”成功更新,但无法更新其他信息,如产品名称和其他自定义属性值 如何使用PHP脚本更新有关产品的所有信息 $productFactory = $objectManager->get('\Magento\Catalog\Model\ProductFactory'); $product = $productFactory->create()->setStoreId($storeId)->load($
$productFactory = $objectManager->get('\Magento\Catalog\Model\ProductFactory');
$product = $productFactory->create()->setStoreId($storeId)->load($product_id);
$product->setStatus(1);
$product->setName('test pr 123');
$product->setSku('test sku');
$product->setDescription("new product description.");
$product->setShortDescription("new short description.");
$product->save();
在这里,我添加了一个脚本,希望这将有助于解决您的问题
use Magento\Framework\App\Bootstrap;
require __DIR__ . 'app/bootstrap.php';
$params = $_SERVER;
$bootstrap = Bootstrap::create(BP, $params);
$objectManager = $bootstrap->getObjectManager();
$instance = \Magento\Framework\App\ObjectManager::getInstance();
$state = $objectManager->get('\Magento\Framework\App\State');
$state->setAreaCode('adminhtml');
$product_collections = $instance ->get('\Magento\Catalog\Model\ResourceModel\Product\CollectionFactory');
$collections = $product_collections->create();
foreach ($collections as $product) {
$id = $product->getId();
$product = $objectManager->create('Magento\Catalog\Model\Product')->load($id);
$product->setWebsiteIds(array(1));
$product->save();
echo $id.'-';
}
添加需要在代码中更新的属性如果只想覆盖某些属性值,则应使用addAttributeUpdate函数。这样,您还可以更新不同存储视图的属性值 我使用一种代码来更新我的产品描述等
$productRepository = $objectManager->get('Magento\Catalog\Model\ProductRepository');
// YOU WANT TO LOAD BY ID?
$id = "YOUR ID HERE";
// YOU WANT TO LOAD BY SKU?
$sku = "YOUR SKU HERE";
if($id) {
$product = $productRepository->getById($id);
}
if($sku) {
$product = $productRepository->get($sku);
}
$shortDescriptionAttributeCode = "short_description";
$descriptionAttributeCode = "description";
$shortDescriptionAttributeValue = "YOUR NEW VALUE";
$descriptionAttributeValue = "YOUR NEW VALUE";
$product->addAttributeUpdate($shortDescriptionAttributeCode, $shortDescriptionAttributeValue, 0);
$product->addAttributeUpdate($descriptionAttributeCode, $descriptionAttributeValue, 0);
我认为类似于$product->setData('description',“新产品描述”);我们应该做到这一点。