Как скрыть поля доставки для самовывоза

Если вам необходимо скрыть лишние поля адреса только для определённых способов доставки (например для самовывоза), а для других оставить (например для курьерской доставки), у вас возникнет проблема с Woocommerce, просто так нельзя убрать поля адреса на странице оформления.

Если вы хоть немного знакомы с программированием я вам помогу.

Итак идея в следующем: используя ajax мы будем скрывать поля, при выборе определённого метода доставки.

Определяем поля адреса, которые нужно скрыть на странице оформления заказа

  1. На странице оформления заказа нажимаем  правой кнопкой на нужном нам варианте доставки и выбираем пункт «Посмотреть код»
  2. Нас интересует <Input radio (элемент) с нужным нам value (значением) — это варианты методов доставки, необходимо выписать те варианты доставки, при выборе которых мы будем скрывать ненужные поля.

В данном случае я хочу скрыть все поля адреса для метода доставки «Самовывоз», у нас это «local_pickup:6» и скрыть поле «индекс» со всех методов доставки, кроме «Почты России» — у нас это «free_shipping:15»

Создаём скрипт, который будет скрывать поля адреса для метода доставки Самовывоз и Почта России.

  1. Идём в директорию с нашей темой и находим папку с названием js — в ней содержатся скрипты для вашей темы;
  2. ваш_сайт/wp-content/ themes/ваша_тема/
    • Если ваша тема содержит папку js — создаём в этой папке файл, назовём его например —  hide_shipping_fields.js — название можете придумать своё,

в него помещаем следующий код:

  •  Если папки js в вашей теме нет — сохраните файл в корне вашей темы (ваш_сайт/wp-content/ themes/ваша_тема/), вместе с файлами header.php, footer.php и т.п.

Правильное подключение скрипта к WordPress

  • Теперь необходимо правильно подключить наш скрипт к выводу, использовать будем стандартный механизм WordPress  — wp_enqueue_script(), для этого открываем файл functions.php нашей темы и в самом конце добавляем код:

     
  • Использование функции  wp_enqueue_script()  это самый правильный и безопасный метод добавления скриптов на страницы под управлением WordPress.
  • В нашем примере мы вешаем на стандартный хук загрузчика скриптов WordPress wp_enqueue_scripts новый action — hide_fields_script (название сами придумываем), далее, на этот action (экшен) регистрируем новую одноимённую функцию,  которая вызывает стандартный процесс подключения скрипта — wp_enqueue_script ()
    • в качестве параметров передаем:
      • ‘hide_shipping_fields’ — рабочее наименование скрипта, обязательный элемент (строка в нижнем регистре)
      • get_template_directory_uri() — получаем текущее расположение нашей активной темы
      • . — «точка» говорит, что мы склеим расположение темы с чем то далее
      • «/js/hide_shipping_fields.js» — расположение нашего скрипта, включая папку js или без неё, если у вас её нет и вы сохранили файл в корне темы
      • array( ‘jquery’ ) — указываем, что перед нашим скриптом надо загрузить скрипт jquery, наш скрипт его будет использовать
      • GENERATE_VERSION, true — говорим, что надо использовать версионность скрипта

Вот и всё. таким образом мы скрываем поля адреса в зависимости от выбранного способа доставки, Самовывоз например,  без перезагрузки страницы.