• Никакой политики на форуме. Иначе - бан!
  • Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!
  • Темы озаглавленные с маленькой буквы или капсом удаляются без предупреждения!

Решено Как убрать 3 поля биллинга при самовывозе

Val0808

Новичок
Добрый вечер!
Помогите, пожалуйста, никак не могу убрать 3 поля.

Вот сайт:
Для иллюстрации проблемы быстрее всего будет добавить 3 единицы этого товара в корзину:

Использовала код https://stackoverflow.com/questions...ased-on-shipping-method-in-woocommerce-3?rq=1 . это единственный, что применяет изменения без обновления страницы чекаута (по крайней мере другие работали только с обновлением страницы у меня).

он убрал billing_country_field (показала на скриншоте)
но поля:
billing_address_1_field
billing_city_field
billing_state_field

я смогла сделать необязательными только. Они никак не убираются. Хотя всё по аналогии с полем страны написано.

подчистила под себя, т.к. мне он нужен был только для одного метода доставки. вроде как ничего лишнего не снесла. вот какой код на данный момент:


PHP:
// Conditional Show hide checkout fields based on chosen shipping methods
add_action( 'wp_footer', 'custom_checkout_field_script' );
function custom_checkout_field_script() {

    // HERE your shipping methods rate IDs
    $local_pickup = 'local_pickup:7';

    $required_text = esc_attr__( 'required', 'woocommerce' );
    $required_html = '<abbr class="required" title="' . $required_text . '">*</abbr>';
    ?>
    <script>
        jQuery(function($){
            var ism = 'input[name^="shipping_method"]',         ismc = ism+':checked',
                rq = '-required',       vr = 'validate'+rq,     w = 'woocommerce',      wv = w+'-validated',
                iv = '-invalid',        fi = '-field',          wir = w+iv+' '+w+iv+rq+fi,
                b = '#billing_',        s = '#shipping_',       f = '_field',
                a1 = 'country',     a2 = 'address_1',   a5 = 'state',    a6 = 'city',
                b1 = b+a1+f,        b2 = b+a2+f,        b5 = b+a5+f,     b6 = b+a6+f,
                localPickup = '<?php echo $local_pickup; ?>';

            // Utility function to shows or hide checkout fields
            function showHide( action='show', selector='' ){
                if( action == 'show' )
                    $(selector).show(function(){
                        $(this).addClass(vr);
                        $(this).removeClass(wv);
                        $(this).removeClass(wir);
                        if( $(selector+' > label > abbr').html() == undefined )
                            $(selector+' label').append('<?php echo $required_html; ?>');
                    });
                else
                    $(selector).hide(function(){
                        $(this).removeClass(vr);
                        $(this).removeClass(wv);
                        $(this).removeClass(wir);
                        if( $(selector+' > label > abbr').html() != undefined )
                            $(selector+' label > .required').remove();
                    });
            }

            // Initializing at start after checkout init (Based on the chosen shipping method)
            setTimeout(function(){
                if( $(ismc).val() == localPickup ) // Choosen "Local pickup" (Hidding "Take away")
                {
                    showHide('hide',b1); // Country
                    showHide('hide',b2); // Address 1
                    showHide('hide',b5); // State
                    showHide('hide',b6); // City
                }
                else
                {
                    showHide('show',b1);
                    showHide('show',b2);
                    showHide('show',b5);
                    showHide('show',b6);
                }
            }, 100);

            // When shipping method is changed (Live event)
            $( 'form.checkout' ).on( 'change', ism, function() {
                if( $(ismc).val() == localPickup )
                {
                    showHide('hide',b1);
                    showHide('hide',b2);
                    showHide('hide',b5);
                    showHide('hide',b6);

                }
                else
                {
                    showHide('show',b1);
                    showHide('show',b2);
                    showHide('show',b5);
                    showHide('show',b6);

                }
            });

        });
    </script>
    <?php
}

// Checkout conditional fields validation
add_action('woocommerce_checkout_process', 'wps_select_checkout_field_process');
function wps_select_checkout_field_process() {
    // HERE your shipping methods rate IDs
    $local_pickup = 'local_pickup:7';


    $chosen_shipping_method = WC()->session->get( 'chosen_shipping_methods' )[0];
    $billing                = '<strong> ' . __('Billing', 'woocommerce') . ' ';
    $shipping               = '<strong> ' . __('Shipping', 'woocommerce') . ' ';
    $country                = __('country.', 'woocommerce');
    $address1               = __('address_1.', 'woocommerce');
    $state                  = __('state.', 'woocommerce');
    $city                  = __('city.', 'woocommerce');
    $end_text               = '</strong> '. __('is a required field.', 'woocommerce');

    if( $chosen_shipping_method == $local_pickup ) {

        if( empty($_POST['billing_country']) )
            wc_add_notice( $billing . $country . $end_text, 'error' );

        if( empty($_POST['billing_address_1']) )
            wc_add_notice( $billing . $address1 . $end_text, 'error' );

        if( empty($_POST['billing_state']) )
            wc_add_notice( $billing . $state . $end_text, 'error' );
 
        if( empty($_POST['billing_city']) )
            wc_add_notice( $billing . $city . $end_text, 'error' );
    }
}
 
Ссылка на проблему
https://pacify.com.ua/checkout/

Вложения

  • Screenshot_9.jpg
    Screenshot_9.jpg
    79 KB · Просмотры: 3
  • Screenshot_10.jpg
    Screenshot_10.jpg
    89.9 KB · Просмотры: 3
Последнее редактирование:
Сверху Снизу