Добавить пользовательский процентный сбор на основе данных сеанса Woocommerce - PullRequest
1 голос
/ 10 апреля 2019

Приведенный ниже код добавит переключатель в форму проверки woocommerce. Если покупатель выбирает радиокнопку, в корзину будет добавлено фиксированное количество денег: 20 доллар $fee = 20;. Что мне нужно, вместо добавления фиксированной суммы, чтобы добавить% от общей суммы, как 3%. Изменение, которое мне нужно сделать, находится в этом разделе кода:

add_action( 'woocommerce_cart_calculate_fees', 'custom_checkout_radio_choice_fee', 20, 1 );
function custom_checkout_radio_choice_fee( $cart ) {

    if ( is_admin() && ! defined( 'DOING_AJAX' ) ) return;

    $radio = WC()->session->get( 'radio_chosen' );
    $disc=$order->get_total();

    if ( "option_1" == $radio ) {
        $fee = 20;
    } elseif ( "option_2" == $radio ) {
        $fee = 30;
    }

    $cart->add_fee( __('Option Fee', 'woocommerce'), $fee );
}

Если общая сумма до того, как пользователь нажмет переключатель, составит 200 доллар, после нажатия общей суммы переключателя станет 206 доллар (добавьте 3%).

Ответы [ 2 ]

0 голосов
/ 10 апреля 2019

Переменная $order не определена, а объект WC_Order не существует до размещения заказа.Вместо этого попробуйте следующее:

add_action( 'woocommerce_cart_calculate_fees', 'custom_fee_based_on_radio_button_choice', 10, 1 );
function custom_fee_based_on_radio_button_choice( $cart ) {
    if ( is_admin() && ! defined( 'DOING_AJAX' ) ) 
        return;

    $radio = WC()->session->get( 'radio_chosen' );

    if ( "option_1" == $radio ) {
        $percent = 20;
    } elseif ( "option_2" == $radio ) {
        $percent = 30;
    }

    if( isset($percent) ) {
        $fee = $cart->get_subtotal() * $percent / 100; // Calculation
        $cart->add_fee( __('Option Fee', 'woocommerce'). " ($percent%)", $fee );    
    }
}

Код находится в файле function.php вашей активной дочерней темы (или активной темы).проверено и работает.

0 голосов
/ 10 апреля 2019
$disc=$order->get_total() * 1.03;

Это сделает вашу общую сумму + (всего * 3%)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...