java如何修改商品信息_在WooCommerce购物车中修改产品价格

本文探讨如何在WooCommerce商店中,通过Java编程动态调整批量购买时的商品价格,以实现折扣策略。当前使用的是负费用方法,但希望改为直接修改产品价格。遇到的问题是在购物车更新过程中无法正确显示和计算调整后价格,以及line_total和line_subtotal。尝试了多种钩子,如'woocommerce_cart_updated',但未成功。寻求解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我有一个商店,如果批量购买产品,我们会给予折扣(产品的批量报价不同) . 那部分是分类的 .

目前,我使用这样的负面费用来申请折扣:

function sale_custom_price($cart_object) {

foreach ($cart_object->cart_contents as $p) {

$prod_id = $p['product_id'];

$prod_n = $p['quantity'];

$prod_price = $p['data']->price;

$prod_name = $p['data']->post->post_title;

$prod_total = $p['line_total'];

/*

calc_discount: NULL for no discount for this product

else

array(

n => how many are required, e.g. 12

free_pcs_deal => how many of these should be free, e.g. 1

)

*/

$discount = calc_discount($prod_id, $prod_n);

if (is_null($discount)) {

continue;

}

$discount_n = $discount['n'];

$free_pcs_deal = $discount['free_pcs_deal'];

if ($discount_n <= 0) {

continue;

}

$discount_txt = $prod_name . ' (' . $discount_n . ' x ' . $free_pcs_deal . ' stk.)';

$discount = -1 * $discount_n * $free_pcs_deal * $prod_price;

$cart_object->add_fee('Rabat: ' . $discount_txt, $discount, true, '');

}

}

add_action( 'woocommerce_cart_calculate_fees', 'sale_custom_price', 2, 1);

但这种情况不受支持,将来也不可能实现 . 所以相反,我想自动调整产品价格 .

假设客户购买12件产品A.正常价格为100,但产品A有大量买入12,仅支付11(买11送一) . 因此,目前产品价格为12 * 100 = 1200,负面费用为100.因此,所有12种产品A的平均产品价格为11 * 100/12 = 91.67 . 我希望在我的购物车中使用它 .

但是我无法让它在购物车中显示修改后的价格以及正确的line_total和line_subtotal以及订单总数 . 所以我好像找不到合适的 action / filter .

我尝试过这样的事情:

$cart = WC()->cart->cart_contents;

foreach ($cart as $key => $p) {

$custom_price = 111; // of course replaced by logic calculating the new, modified price

WC()->cart->cart_contents[$key]['data']->price = $custom_price;

}

我在 woocommerce_cart_updated , woocommerce_before_cart_contents , woocommerce_add_to_cart 和其他人中尝试了这个逻辑,但它不会显示更新价格,line_total,订单总数等的正确购物车 .

我可以通过 woocommerce_cart_item_price 钩子计算并显示更新的价格,但这只是显示,它不在业务逻辑中,因此所有总计都被修改 .

我究竟做错了什么?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值