Почему WooCommerce делает поле телефона обязательным?
По умолчанию WooCommerce требует заполнить поле телефона на странице оформления заказа, так как это часто необходимо для доставки, связи с клиентом и подтверждения заказа. Однако в ряде случаев телефон не нужен, например, при продаже цифровых товаров или в специфических бизнес-моделях.
Чтобы убрать обязательность этого поля, нужно изменить настройки или добавить кастомный код, который отключит валидацию.
Диагностика: как проверить, что телефон обязательный
- Перейдите в WooCommerce > Настройки > Продукты > Оформление заказа и посмотрите, доступна ли опция для настройки обязательных полей.
- На странице оформления заказа попробуйте отправить форму без телефона — если выйдет ошибка, значит поле обязательное.
- Проверьте, не добавляет ли тема или плагин дополнительную валидацию.
Как убрать обязательность телефона через код
WooCommerce использует фильтр woocommerce_billing_fields для управления полями формы. Чтобы сделать телефон не обязательным, добавьте следующий код в файл functions.php вашей дочерней темы или в кастомный плагин:
add_filter('woocommerce_billing_fields', 'wpdo_make_phone_optional', 20, 1);
function wpdo_make_phone_optional($fields) {
if (isset($fields['billing_phone'])) {
$fields['billing_phone']['required'] = false;
}
return $fields;
}
Этот код меняет параметр required на false, делая поле телефона необязательным.
Дополнительно: убрать звёздочку и текст ошибки
Если поле не обязательное, но вёрстка остаётся прежней, можно дополнительно убрать отмеченный CSS класс:
add_filter('woocommerce_form_field_billing_phone', 'wpdo_remove_phone_required_html', 10, 4);
function wpdo_remove_phone_required_html($field, $key, $args, $value) {
if (isset($args['required']) && !$args['required']) {
$field = str_replace('required', '', $field);
$field = str_replace('<abbr class="required" title="обязательно">*</abbr>', '', $field);
}
return $field;
}
Проверка результата после внедрения
- Очистите кэш сайта и браузера.
- Перейдите на страницу оформления заказа, попробуйте оформить заказ без телефона.
- Если форма успешно отправляется без ошибок — задача выполнена.
- Проверьте, не сломалась ли вёрстка поля телефона и отсутствует ли звёздочка.
Частые ошибки и как их исправить
- Код не работает — поле остаётся обязательным: вероятно, тема или плагин переопределяют поля позже, чем ваш фильтр. Попробуйте увеличить приоритет фильтра, например,
add_filter(..., 99). - Ошибка с валидацией JavaScript: некоторые темы используют собственный JS для проверки полей. Проверьте консоль браузера и отключите скрипты, если нужно.
- Телефон всё равно сохраняется как обязательный в базе: убедитесь, что в REST API или сторонних интеграциях не накладывается ограничение.
Практические советы по безопасности и UX
- Если телефон не обязателен, подумайте, как вы будете связываться с клиентом при проблемах с заказом.
- При продаже цифровых товаров часто телефон не нужен — отключайте обязательность для улучшения UX.
- Не удаляйте поле полностью, если вы используете службы доставки, требующие телефон.
Сравнение способов удаления обязательного поля телефона
| Метод | Плюсы | Минусы |
|---|---|---|
Через фильтр woocommerce_billing_fields | Простой, не требует плагинов, гибкий | Может конфликтовать с темой/плагинами |
| Использование плагинов для кастомизации Checkout | Удобный UI, дополнительные функции | Дополнительная нагрузка, может быть платным |
| Изменение шаблонов WooCommerce | Полный контроль над формой | Сложнее в поддержке, требует обновления шаблонов |