我为学校建立了Woocommerce解决方案。他们为每门课程提供了各种各样的选项,因此使用一些插件来帮助他们实现目标。
对于每门课程,您可以选择持续时间(2 weeks
或4 weeks
)以及其他一些选项,因此您可以选择一些单选按钮。这些是由插件管理的。
您还必须选择是否要支付全价或支付存款价值。这是由另一个插件(Woothemes存款)管理。
Woothemes存款只提供为存款设定单一固定价格的选项,就是这样。但学校设定的存款价值是4 weeks
期限选项价值的两倍。
因此,如果选择4周单选按钮,我的目标是将存款值乘以2。
我查看了Woothemes Deposits文件,发现了这个功能,据说可以管理添加到购物车的事件:
public function add_cart_item( $cart_item ) {
if ( ! empty( $cart_item['is_deposit'] ) ) {
$deposit_amount = WC_Deposits_Product_Manager::get_deposit_amount( $cart_item['data'], ! empty( $cart_item['payment_plan'] ) ? $cart_item['payment_plan'] : 0 );
if ( false !== $deposit_amount ) {
$cart_item['deposit_amount'] = $deposit_amount;
// [...] other stuff that doesn't matter here
$cart_item['data']->set_price( $cart_item['deposit_amount'] );
}
}
return $cart_item;
}
所以我尝试在return $cart_item;
之前添加此内容:
if ( $_POST['tmcp_radio_0'] == "4 weeks_1") {
$cart_item['data']->set_price( $cart_item['price'] * 2 );
}
tmcp_radio_0
是单选按钮名称,4 weeks_1
是目标单选按钮的值...
但没有成功。我尝试在此函数的其他一些行中添加此变体,有时我得到所有存款(即使是2周的存款)乘以2,有时我得到500错误。
有光吗?我想在正确的地方做吗?我知道我不应该修改插件文件,但我只是想了解发生了什么,然后尝试提出一个更优雅的解决方案。
谢谢!