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

时间:2019-04-10 14:55:57

标签: php wordpress woocommerce cart checkout

以下代码将在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%)。

2 个答案:

答案 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文件中。经过测试并可以正常工作。