首页 > 解决方案 > 从 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');

标签: phpwordpressobjectmethodswoocommerce

解决方案


自 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);
}

测试和工作。


推荐阅读