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

时间:2019-04-18 12:30:38

标签: php wordpress woocommerce radio-button cart

该问题与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 );

但是我怀疑我做对了。

有人可以请我指导如何做吗?

1 个答案:

答案 0 :(得分: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 );

两者都应该起作用。