根据Woocommerce会话数据添加自定义百分比费用

问题描述 投票:1回答:2

下面的代码将为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%)。

php wordpress woocommerce cart checkout
2个回答
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文件中。测试和工作。


0
投票
$disc=$order->get_total() * 1.03;

这将使您的总数+(总计* 3%)

© www.soinside.com 2019 - 2024. All rights reserved.