下面的代码将为woocommerce结帐表单添加一个单选按钮。如果买家选择了单选按钮,那么固定数量的钱将被添加到购物车中,如20
dollar $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%
)。
未定义$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文件中。测试和工作。
$disc=$order->get_total() * 1.03;
这将使您的总数+(总计* 3%)