从sku获取产品对象并在WooCommerce中更新价格

时间:2019-05-29 04:28:35

标签: php wordpress object methods woocommerce

如何在我的功能文件中通过product_id更新产品?

我尝试使用以下代码,但未成功:

DECLARE
     var NUMBER;
     var1 NUMBER;
BEGIN
     sale_procedure(outletid => 809,itemcod => 128169,start_date => '2018-1-1',end_date => '2019-1-1'
     ,amount => var,quantity => var1);

     dbms_output.enable;
     dbms_output.put_line(var);
End;
/

1 个答案:

答案 0 :(得分:1)

自WooCommerce 3以来,不推荐使用new WC_Product_Factory()方法的get_product(),而简单地将其替换为功能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);
}

经过测试可以正常工作。