客户希望对他们销售的订阅服务提供一些特定/定制的折扣。我找不到一个插件来满足他们的需要,所以我想我会自己编写它。
但我找不到如何在购物车中编辑订阅的初始付款项目。
使用woocommerce\\u before\\u calculate\\u totals,我可以编辑每月金额。但首期付款不变。尽管它将其价格循环到下面,因为我可以将其输出到屏幕上,所以我认为$cart\\u item[\'data]->set\\u price($new\\u price)不会改变初始付款的价格。
我可以通过woocommerce\\u cart\\u subtotal进行更改,但我看不到如何在该函数中获取原始价格来进行调整。但无论如何,这并不会改变税收和总额。
下面的代码没有使用$cart\\u item[\'data\']->get\\u price(),因为woocommerce\\u before\\u calculate\\u totals似乎被调用了两次,这会破坏我的计算。
function set_new_customer_discount( $cart )
{
// Loop Through cart items
foreach ( $cart->get_cart() as $key => $cart_item )
{
//Hook seems to be firing twice for some reason... Get the price from the original product data, not from the cart...
$item_id = $cart_item[\'data\']->id;
$product = wc_get_product( $item_id );
$original_price = $product->get_price();
$new_price = $original_price/2;
$cart_item[\'data\']->set_price( $new_price );
}
}
add_action(\'woocommerce_before_calculate_totals\', \'set_new_customer_discount\', 20, 1 );
篮子看起来是这样的,例如,“立即付款”行和“经常性总计”行都要打9折:
Basket totals
To pay now
Subtotal £400.00
VAT £80.00
Total £480.00
Recurring Totals
Subtotal £577.80 / month for 5 months
VAT £115.56 / month for 5 months
Recurring Total £693.36 / month for 5 months
First payment: 9th May 2019