Як виправити помилку «Будь ласка, введіть адресу для продовження» у WooCommerce

Як виправити помилку «Будь ласка, введіть адресу для продовження» у WooCommerce

Під час розробки інтернет-магазину на останніх версіях WooCommerce часто трапляється ситуація, коли плагін не дає оформити замовлення і показує помилку «Будь ласка, введіть адресу для продовження» (в англійській версії — Please enter an address to continue). При цьому всі поля на сторінці заповнені, а сама помилка з'являється нерегулярно і лише в деяких відвідувачів сайту, тому її буває складно відловити.

Нижче — чому так відбувається, як швидко виправити помилку і як приховати поле «Країна», якщо воно вам не потрібне на чекауті.

Чому WooCommerce пише «Будь ласка, введіть адресу для продовження»

Найімовірніша причина — зі сторінки оформлення замовлення видалили поле «Країна» (billing_country або shipping_country). В останніх версіях WooCommerce воно обов'язкове: саме за країною плагін визначає зону доставки, доступні способи доставки та податки.

Коли покупець переходить на чекаут, WooCommerce намагається визначити його місцезнаходження, щоб запустити логіку, прив'язану до певних геозон. Якщо поля країни на сторінці немає, WooCommerce не отримує адресу доставки, не пропускає покупця далі й показує цю помилку.

Звідси і «плаваюча» поведінка: у когось країна вже збережена в профілі чи сесії, і замовлення проходить, а новий відвідувач без збереженої адреси впирається в помилку.

Як виправити помилку: поверніть поле «Країна» на чекаут

Щоб вирішити проблему, достатньо відновити поле країни. Спосіб залежить від того, як ви прибирали поля.

Якщо поля видаляли PHP-кодом

Знайдіть у темі або в кастомному плагіні обробник хука woocommerce_checkout_fields і виключіть з нього поле країни: зайві поля можна й далі прибирати, але billing_country і shipping_country мають лишитися.

add_filter( 'woocommerce_checkout_fields', function ( $fields ) {
    // Прибираємо зайві поля
    unset( $fields['billing']['billing_company'] );
    unset( $fields['billing']['billing_address_2'] );

    // Поле країни НЕ видаляємо — інакше з'явиться помилка
    // unset( $fields['billing']['billing_country'] );

    return $fields;
} );

Якщо поля вимикали через плагін

Якщо ви керуєте полями чекауту через спеціальний плагін, увімкніть поле країни в його налаштуваннях. Наприклад, у нашому плагіні Qodax Checkout Manager для цього достатньо натиснути перемикач навпроти поля billing_country.

Якщо поле країни на місці, а помилка не зникає, перевірте інші плагіни та тему, які змінюють адресні поля: конфлікт двох редакторів полів дає той самий результат.

Як приховати поле «Країна» в WooCommerce і не зламати чекаут

Якщо ви не хочете показувати покупцям поле країни, не видаляйте його, а приховайте стилями CSS. Поле залишиться у формі, WooCommerce отримає значення, а покупець його не побачить. Скопіюйте код нижче у файл стилів вашої теми:

#billing_country_field,
#shipping_country_field {
    display: none;
}

Щоб приховане поле завжди мало правильне значення, обмежте продаж однією країною в налаштуваннях WooCommerce (WooCommerce → Налаштування → Загальні). Тоді країна підставляється автоматично, і покупцю не потрібно нічого вибирати.

Це типовий сценарій для українських магазинів, які спрощують чекаут до імені, телефону та відділення перевізника. Якщо ви теж будуєте таку форму, SmartyParcel для WooCommerce додає на чекаут вибір відділень і поштоматів Нової Пошти, Укрпошти та інших перевізників.

Поширені запитання

Тому що WooCommerce бере країну не тільки з поля на чекауті, а й зі збереженої адреси в обліковому записі, із сесії або з геолокації. Якщо країна вже відома, замовлення проходить, якщо ні — покупець бачить помилку.

Ні, це не допоможе: якщо поле порожнє, WooCommerce все одно не має адреси для розрахунку доставки. Залиште поле у формі, приховайте його через CSS і обмежте продаж однією країною, щоб значення підставлялося автоматично.

Якщо доставка йде на платіжну адресу, обов'язкове billing_country. Якщо покупець вказує іншу адресу доставки, потрібне ще й shipping_country. Найпростіше — залишити обидва поля.