自定义结帐字段组中的附加单选按钮,用于更新Woocommerce中的费用

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

这个问题与“Update fee dynamically based on radio buttons in Woocommerce checkout”答案有关,这很好用。

实际上在字段组中有2个单选按钮,我想添加一个(所以3个单选按钮)。

我的问题是我想添加一个额外的单选按钮,但我只是没有看到/了解添加其他选项的位置。

我在'options'数组中添加了一个额外的字段:..................................... ......................................

'options' => array(
            'bag' => __('In a bag '.wc_price(3.00), $domain),
            'box' => __('In a gift box '.wc_price(9.00), $domain),
            'speedboat' => __('In a speedboat '.wc_price(20.00), $domain),

...........................................................................

但是我对此部分感到困惑:

...........................................................................

$packing_fee = WC()->session->get( 'chosen_packing' ); // Dynamic packing fee
    $fee = $packing_fee == 'box' ? 9.00 : 3.00;
    $cart->add_fee( __( 'Packaging fee', 'woocommerce' ), $fee );

........................................................................

我尝试添加: -

$packing_fee = WC()->session->get( 'chosen_packing' ); // Dynamic packing fee
    $fee = $packing_fee == 'box' ? 9.00 : 3.00 :;
    $cart->add_fee( __( 'Packaging fee', 'woocommerce' ), $fee );

但我怀疑我做得对。

有人可以指导我如何做到这一点吗?

php wordpress woocommerce radio-button cart
1个回答
0
投票

对于您的3个单选按钮(阵列中的3个选项),如:

'options' => array(
    'bag' => __('In a bag '.wc_price(3.00), $domain),
    'box' => __('In a gift box '.wc_price(9.00), $domain),
    'speedboat' => __('In a speedboat '.wc_price(20.00), $domain),
),

您将不得不替换此原始代码:

$packing_fee = WC()->session->get( 'chosen_packing' ); // Dynamic packing fee
$fee = $packing_fee == 'box' ? 9.00 : 3.00;
$cart->add_fee( __( 'Packaging fee', 'woocommerce' ), $fee );

以下(第三种选择):

$packing_fee = WC()->session->get( 'chosen_packing' ); // Dynamic packing fee

if( $packing_fee === 'box' )
   $fee = 9.00; 
else if( $packing_fee === 'speedboat' ) 
   $fee = 20.00;
else
   $fee = 3.00;

$cart->add_fee( __( 'Packaging fee', 'woocommerce' ), $fee );

或者这种类似的方式更紧凑:

$packing_fee = WC()->session->get( 'chosen_packing' ); // Dynamic packing fee
$fee = $packing_fee === 'bag' ? 3.00 : ( $packing_fee === 'box' ? 9.00 : 20.00 );
$cart->add_fee( __( 'Packaging fee', 'woocommerce' ), $fee );

两者都应该有效。

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