以下代码将在woocommerce结帐表单中添加一个单选按钮。
如果买方选择单选按钮,则固定金额的钱将像20
美元$fee = 20;
一样添加到购物车。我需要的是代替添加固定金额来添加总金额的%,例如3%
。我需要做的更改是在代码的这一部分:
add_action( 'woocommerce_cart_calculate_fees', 'custom_checkout_radio_choice_fee', 20, 1 );
function custom_checkout_radio_choice_fee( $cart ) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) ) return;
$radio = WC()->session->get( 'radio_chosen' );
$disc=$order->get_total();
if ( "option_1" == $radio ) {
$fee = 20;
} elseif ( "option_2" == $radio ) {
$fee = 30;
}
$cart->add_fee( __('Option Fee', 'woocommerce'), $fee );
}
如果在用户单击单选按钮之前的总金额为200
美元,则单击单选按钮后的总金额变为206
美元(加上3%
)。
答案 0 :(得分:0)
$disc=$order->get_total() * 1.03;
这将使您的总数总计+(总计* 3%)
答案 1 :(得分:0)
未定义$order
变量,并且WC_Order
对象在下订单之前不存在。请尝试以下操作:
add_action( 'woocommerce_cart_calculate_fees', 'custom_fee_based_on_radio_button_choice', 10, 1 );
function custom_fee_based_on_radio_button_choice( $cart ) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
$radio = WC()->session->get( 'radio_chosen' );
if ( "option_1" == $radio ) {
$percent = 20;
} elseif ( "option_2" == $radio ) {
$percent = 30;
}
if( isset($percent) ) {
$fee = $cart->get_subtotal() * $percent / 100; // Calculation
$cart->add_fee( __('Option Fee', 'woocommerce'). " ($percent%)", $fee );
}
}
代码进入您的活动子主题(或活动主题)的function.php文件中。经过测试并可以正常工作。