我在这件事上纠缠太久了。我在stackoverflow上找到的所有东西都试过了,我觉得自己好像在兜圈子。
我在产品页面上有一张表格,要求提供发票号码和发票金额。我可以使用以下代码获取产品属性以更新并显示在购物车页面上:
function invoice_save_price( $cart_item_data, $product_id ) {
if( isset( $_POST['invoice_id'] ) ) {
$cart_item_data = array();
$cart_item_data[ "invoice_number" ] = $_POST['invoice_number'];
$cart_item_data[ "invoice_amount" ] = $_POST['invoice_amount'];
}
return $cart_item_data;
}
add_filter( 'woocommerce_add_cart_item_data', 'invoice_save_price', 99, 2 );
我使用的是自定义产品类型-扩展简单产品。我不确定这样做是否正确,因为我的产品必须设置默认价格(目前为1美元),否则无法显示。
function wcpt_register_invoice_type () {
class WC_Product_Invoice extends WC_Product {
public function __construct( $product ) {
$this->product_type = 'invoice';
parent::__construct( $product );
}
}
}
但是,我无法更新价格。我的代码如下:
add_action( 'woocommerce_before_calculate_totals', 'invoice_add_custom_price', 99 );
function invoice_add_custom_price($cart_object) {
if (isset($_POST['invoice_id'])) {
foreach ( $cart_object->get_cart() as $value ) {
$newValue = number_format($_POST['invoice_amount'],2);
$value['data']->set_price($newValue);
}
return $value;
}
}
我认为可能与另一个插件有冲突,所以我开始测试wordpress 5.8和woocommerce 5.5.2的干净安装
我在woocommerce(3.x)的旧版本中发现了很多关于这一点的引用,但在以后的版本中我运气不太好。
有人能告诉我我错过了什么吗?任何帮助都将不胜感激!
谢谢
暂无答案!
目前还没有任何答案,快来回答吧!