php - 从 sku 获取产品对象并在 WooCommerce 中更新价格
问题描述
如何通过函数文件中的 product_id 更新产品?
我尝试使用以下代码但没有成功:
$_pf = new WC_Product_Factory();
$product_id = wc_get_product_id_by_sku( $sku );
$_product = $_pf->get_product($product_id);
$_product->set_price('225');
解决方案
自 WooCommerce 3 以来,new WC_Product_Factory()
withget_product()
方法已被弃用,并被简单地替换为 function wc_get_product()
。
要更新价格,您必须更新价格和正常价格(或价格和销售价格) ...
此外,该save()
方法对于最后获取数据也是必要的。
因此,要从现有产品 SKU中获取WC_Product
对象并在其上使用任何可用方法,请执行以下操作:
$new_price = '225'; // New price
$_product_id = wc_get_product_id_by_sku( $sku );
if ( $_product_id > 0 ) {
// Get an instance of the WC_Product Object
$_product = wc_get_product( $_product_id );
$_product->set_regular_price($new_price); // Set the regular price
$_product->set_price($new_price); // Set the price
$_product->save(); // Save to database and sync
} else {
// Display an error (invalid Sku
printf('Invalid sku "%s"… Can not update price.', $sku);
}
测试和工作。
推荐阅读
- r - Returning error message for my function if the argument isn't relevant
- python - 如何格式化 ArcGIS FeatureSet/FeatureCollection 以与 Folium 一起使用
- java - java - 具有多个数组的休眠地图组件
- python - 为什么不使用python的逻辑运算符或“x == 5 or 4”的形式抛出错误?
- javascript - 在高图中显示高于零而不是低于零的负 Y 值
- c++ - 为什么我们需要将标准库用于字符串而不是 int 数据类型?
- python - 熊猫检查系列值是否在区间内
- javascript - 将 Wrapper+Canvas+Div 匹配到图像的大小
- windows - 是否可以在 VS Code 中打开两个文件并在 Beyond Compare 中打开它们?
- elasticsearch - elasticsearch 搜索产品指数,但按价格指数排序