Дополнительные переключатели в пользовательской группе полей оформления заказа, которые обновляют плату в Woocommerce - PullRequest
0 голосов
/ 18 апреля 2019

Этот вопрос относится к " Плата за обновление динамически, основанная на переключателях в 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 голосов
/ 18 апреля 2019

Для вашей 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 );

Оба должны работать.

...