Проблема: обязательное поле телефона при оформлении заказа в WooCommerce
По умолчанию WooCommerce требует указать номер телефона при оформлении заказа, что не всегда удобно. Особенно если вы продаете цифровые товары или услуги, где телефон не нужен. В результате пользователи сталкиваются с ошибками валидации, если не вводят номер, и процесс покупки прерывается.
Диагностика проблемы: как проверить, что телефон — обязательное поле
- Перейдите на страницу оформления заказа.
- Оставьте поле телефона пустым.
- Попытайтесь оформить заказ — появится ошибка, что номер телефона обязателен.
- В админке WooCommerce в
Настройки > Покупканет отдельной опции для отключения обязательности телефона.
Значит, чтобы убрать обязательность, нужно вмешаться через код.
Пошаговое решение: отключаем обязательное поле телефона через фильтр
WooCommerce использует стандартное поле billing_phone с обязательной валидацией. Чтобы сделать его необязательным, добавим следующий код в файл functions.php вашей дочерней темы или в специальный плагин для кастомных функций:
add_filter('woocommerce_billing_fields', 'wpcodes_make_phone_optional', 20, 1);
function wpcodes_make_phone_optional($fields) {
if (isset($fields['billing_phone'])) {
$fields['billing_phone']['required'] = false;
}
return $fields;
}Этот фильтр изменяет свойства поля телефона, делая его необязательным.
Убираем обязательную проверку номера телефона на стороне JavaScript
Иногда дополнительно WooCommerce использует JS-валидацию. Чтобы избежать ошибок, можно отключить требование JS, добавив такой скрипт:
add_action('wp_footer', 'wpcodes_remove_phone_js_validation');
function wpcodes_remove_phone_js_validation() {
if (is_checkout()) {
?>
<script>
jQuery(function($){
$('#billing_phone').removeAttr('required').removeClass('validate-required');
});
</script>
<?php
}
}Проверка результата после внедрения
- Обновите страницу оформления заказа в браузере (можно в режиме инкогнито).
- Оставьте поле телефона пустым и попробуйте оформить заказ.
- Ошибка обязательного поля должна исчезнуть, заказ пройдет без номера телефона.
- Если вы используете кэширование, очистите кэш сайта и браузера.
Частые ошибки и как их исправить
- Кэширование страницы оформления заказа: Из-за кэширования старые правила валидации могут оставаться активными. Очистите кэш плагинов (например, WP Rocket) и браузера.
- Другие плагины, требующие телефон: Проверьте плагины для доставки, оплаты или кастомизации оформления заказа — они могут добавлять собственные проверки.
- Изменения в шаблоне: Если тема переопределяет шаблоны WooCommerce, убедитесь, что там нет жестко заданного атрибута
requiredу поля телефона.
Практические советы по безопасности и производительности
- Отключение обязательного телефона снижает количество данных, но может повлиять на качество связи с клиентом. Если вы используете телефон для подтверждения заказов, подумайте о внедрении альтернативных методов подтверждения (email, SMS через специальные сервисы).
- Включайте такие изменения через дочернюю тему или плагин, чтобы не потерять их при обновлении WooCommerce.
- Минимизируйте использование inline-скриптов. Если JS-валидация не нужна, отключайте ее централизованно, чтобы не создавать конфликтов.
Сравнение вариантов отключения обязательного телефона в WooCommerce
| Метод | Описание | Плюсы | Минусы |
|---|---|---|---|
Код через фильтр woocommerce_billing_fields | Изменяет свойство поля на необязательное | Быстро, без сторонних плагинов | Требует доступа к коду, возможен конфликт с кастомными проверками |
| Использование плагинов для кастомизации Checkout | Плагины типа Checkout Field Editor позволяют изменять обязательность полей | Простой интерфейс, не требует кода | Дополнительная нагрузка, стоимость, конфликты с другими плагинами |
| Полное удаление поля телефона | Удаляет поле из формы | Максимально упрощает оформление | Потеря информации, возможные проблемы с доставкой и поддержкой |