我创建了一个简单的插件,可以从我的 CSV 文件中导入产品,效果很好。创建新产品的函数如下所示(简化):
function create_products() {
foreach($keys as $key) {
// Assign variables
// ...
// Create new product
$objProduct = new WC_Product();
$objProduct->set_name($title);
$objProduct->set_status("publish");
$objProduct->set_catalog_visibility('visible');
$objProduct->set_price($price);
$objProduct->set_regular_price($price);
$objProduct->set_manage_stock(true);
$objProduct->set_stock_quantity($stock);
$objProduct->set_stock_status('instock');
$objProduct->set_backorders('notify');
$objProduct->set_reviews_allowed(true);
$objProduct->set_sold_individually(false);
$objProduct->set_sku($sku);
// Save it
$product_id = $objProduct->save();
}
}
它运作良好。之后,我有另一个功能,只是更新已经存在的产品的标题、价格、SKU 和库存数量。它看起来像这样(再次简化):
function update_products() {
foreach($keys as $key) {
// Get product ID and it's object
// $id, $objProduct
// Assign variables
// $title, $stock, $price, $sku
// Perform updates
update_stock($id, $stock); // updates '_stock' and '_stock_status' meta, runs wp_update_product_stock() method
update_post_meta($id, '_regular_price', (float)$price);
$objProduct->set_sku($sku);
$objProduct->set_name($title);
$objProduct->save();
}
}
但它根本不起作用。不知何故,SKU(用 更新set_sku()
)和库存更新工作。它会更新,但其余部分(名称和价格)不会更新。至于标题,我也尝试过wp_update_post()
方法,并尝试更改'post_title'
,但也没有结果。
都是简单的产品。我如何更新他们的标题、价格和股票价值?