Woocommerce: добавьте дополнительную стоимость к самому способу доставки - PullRequest
0 голосов
/ 14 января 2020

Я нашел следующий код по этой ссылке: Добавьте плату в зависимости от способа доставки и способа оплаты в Woocommerce

Код работает отлично, если вы хотите добавить дополнительную плату, если Выбран способ оплаты "приблизительно sh при доставке".

Мой вопрос заключается в том, как добавить дополнительную стоимость к самому способу доставки при выборе метода "приблизительно sh при доставке", а не показывать его как другой поле с доплатой.

код:

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

        ## ------ Your Settings (below) ------ ##
        $your_payment_id      = 'cod'; // The payment method
        $your_shipping_method = 'some_custom_shipping_method_id'; // The shipping method
        $fee_amount           = 12; // The fee amount
        ## ----------------------------------- ##

        $chosen_payment_method_id  = WC()->session->get( 'chosen_payment_method' );
        $chosen_shipping_method_id = WC()->session->get( 'chosen_shipping_methods' )[0];
        $chosen_shipping_method    = explode( ':', $chosen_shipping_method_id )[0];

        if ( $chosen_shipping_method == $your_shipping_method 
        && $chosen_payment_method_id == $your_payment_id ) {
            $fee_text = __( "Extra ".$chosen_shipping_method );
            $cart->add_fee( $fee_text, $fee_amount, false );
        }
    }

    // Refresh checkout on payment method change
    add_action( 'wp_footer', 'refresh_checkout_script' );
    function refresh_checkout_script() {
        // Only on checkout page
        if( is_checkout() && ! is_wc_endpoint_url('order-received') ) :
        ?>
        <script type="text/javascript">
        jQuery(function($){
            // On payment method change
            $('form.woocommerce-checkout').on( 'change', 'input[name="payment_method"]', function(){
                // Refresh checkout
                $('body').trigger('update_checkout');
            });
        })
        </script>
        <?php
        endif;
    }

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