自定义结帐字段组中的附加单选按钮,用于更新 Woocommerce 中的费用
Additional radio button in a custom checkout field group that update a fee in Woocommerce
此问题与 "Update fee dynamically based on radio buttons in Woocommerce checkout" 答案相关,效果很好。
实际上字段组中有 2 个单选按钮,我想再添加一个(所以总共有 3 个单选按钮)。
我的问题是我想添加一个额外的单选按钮,但我不知道 seeing/understanding 在哪里可以添加一个额外的选项。
我在 '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 );
两者都应该有效。
此问题与 "Update fee dynamically based on radio buttons in Woocommerce checkout" 答案相关,效果很好。
实际上字段组中有 2 个单选按钮,我想再添加一个(所以总共有 3 个单选按钮)。
我的问题是我想添加一个额外的单选按钮,但我不知道 seeing/understanding 在哪里可以添加一个额外的选项。
我在 '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 );
两者都应该有效。