以编程方式设置产品价格,使其显示在 Woocommerce 中的任何位置

Dav*_*ave 0 php wordpress product woocommerce price

我有一个 php cron 作业,正在更新来自第 3 方供应商的产品信息。这些变化可以是价格、销售价格、库存等。

我的一切都在运行,除了当我通过以下代码销售产品时:

 update_post_meta( $product_id, '_sale_price', $sale_price );
 update_post_meta( $product_id, '_price', $sale_price );
Run Code Online (Sandbox Code Playgroud)

产品已正确更新,并在网站和产品管理上显示产品的销售价格。当我使用 woocommerce 的短代码之一来显示在售产品时,它不会撤回通过上述代码更新的内容,除非它是通过管理面板完成的。

[products limit="24" columns="4" on_sale="true" ]
Run Code Online (Sandbox Code Playgroud)

所以我的代码没有做 woocommerce 所做的事情,但我不知道我错过了什么。到目前为止,我发现的唯一解决方法是删除管理面板中的销售价格 - >保存,然后将其添加回来 - >并再次保存。由于 3,000 多种产品有 18,000 多种变体,这不是手工可以完成的事情。

顺便说一句:当我们导入 vis csv 文件源时,我也遇到了 WP all import 的问题。

任何想法或想法都会有帮助。

谢谢!

Loi*_*tec 5

最好的方法应该是使用CRUD 方法,但由于它是在 cron 作业中,我不确定它是否有效。无论如何,请尝试以下操作:

\n\n
// Get an instance of the WC_Product object\n$product = new WC_Product( $product_id );\n\n// Set product prices\n$product->set_sale_price( $sale_price );\n$product->set_price( $price );\n\n// Save data and update caches\n$product->save();\n
Run Code Online (Sandbox Code Playgroud)\n\n

现在,根据产品类型,您可能需要以不同方式调用产品对象实例\xe2\x80\xa6

\n