这个问题与“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 );
但我怀疑我做得对。
有人可以指导我如何做到这一点吗?
对于您的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 );
两者都应该有效。