我有一个定制产品(地毯),其价格取决于用户选择的长度和宽度。
我可以使用jQuery在产品页面上轻松处理价格变化。
但是我正在努力寻找可以满足用户选择的东西,并使用它们来计算购物车/结帐时的自定义价格。
我将用户输入的数据保存到$ cart_item_data中,就像这样...
function smcrp_add_custom_rug_fields_to_cart_item( $cart_item_data, $product_id, $variation_id ) {
$length_text = filter_input( INPUT_POST, 'smcrp-length' );
$width_text = filter_input( INPUT_POST, 'smcrp-width' );
$unit_text = filter_input( INPUT_POST, 'smcrp-unit' );
if ( empty( $length_text ) && empty( $width_text ) && empty( $unit_text ) ) {
return $cart_item_data;
}
$cart_item_data['smcrp-length'] = $length_text;
$cart_item_data['smcrp-width'] = $width_text;
$cart_item_data['smcrp-unit'] = $unit_text;
return $cart_item_data;
}
但是我不确定如何仅在结帐时更改价格。
我尝试在另一个线程上遵循一些建议并使用:
function smcrp_custom_rug_price( $price, $product ) {
wc_delete_product_transients($product->get_id());
if ( strpos( $product->get_data()["name"], "- Custom" ) === FALSE )
return $price;
return 180;
}
但这会返回静态价格,我似乎无法从此函数内部访问cart_item_data。
而且我无法让它仅显示在购物车/结帐栏上。
有什么建议吗?
谢谢, 杰克