【问题标题】:Additional radio button in a custom checkout field group that update a fee in Woocommerce自定义结帐字段组中的附加单选按钮,用于更新 Woocommerce 中的费用
【发布时间】:2019-09-08 19:05:08
【问题描述】:

这个问题与 "Update fee dynamically based on radio buttons in Woocommerce checkout" 答案相关,效果很好。

实际上字段组中有 2 个单选按钮,我想再添加一个(所以总共有 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
    $fee = $packing_fee == 'box' ? 9.00 : 3.00 :;
    $cart->add_fee( __( 'Packaging fee', 'woocommerce' ), $fee );

但我怀疑我做得对。

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

【问题讨论】:

  • 抱歉,因为我是这里的新成员,所以无法在原始线程中发帖。
  • p.s.- 我的意思是:- $packing_fee = WC()->session->get( 'chosen_packing' ); // 动态打包费 $fee = $packing_fee == 'box' ? 9.00:3.00:25.00; $cart->add_fee( __( '包装费', 'woocommerce' ), $fee );

标签: php wordpress woocommerce radio-button cart


【解决方案1】:

对于您的 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 );

两者都应该工作。

【讨论】:

  • 非常感谢 Loic,非常感谢!老实说,我对紧凑的代码并不熟悉,if 和 else 语句让它变得清晰起来!
猜你喜欢
  • 2015-09-06
  • 2020-09-08
  • 2018-09-02
  • 2021-05-16
  • 1970-01-01
  • 2018-08-04
  • 1970-01-01
  • 2015-11-14
  • 1970-01-01
相关资源
最近更新 更多