Почему может понадобиться убрать обязательное поле телефона в WooCommerce
В стандартной форме оформления заказа WooCommerce поле «Телефон» является обязательным. Однако в некоторых случаях, например при продаже цифровых товаров, либо если связь с клиентом ведется по e-mail, это поле может быть лишним и мешать конверсии. Рассмотрим, как убрать обязательность поля телефона, оставив его необязательным или вовсе скрыв.
Диагностика проблемы: как проверить, что поле телефона обязательное
По умолчанию WooCommerce использует массив woocommerce_checkout_fields, где для каждого поля определяется параметр 'required' => true. Чтобы проверить, является ли поле телефона обязательным, можно добавить временный сниппет в functions.php темы или в плагин:
add_action('woocommerce_checkout_process', function() {
$fields = WC()->checkout()->get_checkout_fields();
var_dump($fields['billing']['billing_phone']);
exit;
});При переходе к оформлению заказа вы увидите параметры поля. Если 'required' => true, значит поле обязательно.
Пошаговое решение: как убрать обязательность поля телефона
1. Сделать поле телефона необязательным
Добавьте следующий код в functions.php вашей дочерней темы или в кастомный плагин:
add_filter('woocommerce_billing_fields', function($fields) {
if(isset($fields['billing_phone'])) {
$fields['billing_phone']['required'] = false;
}
return $fields;
});Этот фильтр изменит параметр required у поля телефона на false.
2. (Опционально) Убрать поле телефона полностью из формы
Если нужно совсем скрыть поле, используйте:
add_filter('woocommerce_checkout_fields', function($fields) {
if(isset($fields['billing']['billing_phone'])) {
unset($fields['billing']['billing_phone']);
}
return $fields;
});Обратите внимание, что если поле убрать, некоторые плагины оплаты или службы доставки могут требовать телефон, что приведет к ошибкам.
3. Проверка работы
- Обновите страницу оформления заказа.
- Убедитесь, что при попытке оформить заказ без заполнения телефона ошибка не появляется (если поле необязательное).
- Если поле скрыто, оно не показывается в форме.
- Проверьте, что остальные поля обязательны, а заказ оформляется корректно.
Проверка результата после внедрения
После добавления кода обновите страницу оформления заказа и попробуйте оформить заказ, оставив поле телефона пустым. Если поле необязательное, заказ не должен выдавать ошибку. Если поле убрано, убедитесь, что оформление заказа проходит без сбоев.
Для дополнительной проверки можно использовать инструмент разработчика браузера (F12) и поискать поле с именем billing_phone. Если поле отсутствует или не имеет атрибута required, значит изменения применены.
Частые ошибки и как их исправить
- Ошибка «Пожалуйста, введите номер телефона» при оформлении заказа
Причина: поле телефона осталось обязательным, либо плагин оплаты требует телефон. Проверьте, что нет других плагинов, которые навязывают требование этого поля. - Поле телефона не исчезает после удаления через фильтр
Причина: код добавлен не в правильное место или конфликт с темой/плагинами. Проверьте синтаксис, отключите плагины, влияющие на оформление заказа, для теста. - Ошибка при оплате или доставке после удаления телефона
Причина: некоторые шлюзы и службы требуют телефон для связи. В этом случае лучше оставить поле необязательным, но не убирать его полностью.
Практические советы по безопасности и производительности
- Не редактируйте напрямую файлы ядра WooCommerce — используйте хуки и фильтры.
- Проверьте, как изменения влияют на интеграции с платежными системами и службами доставки.
- Для многосайтовой установки убедитесь, что изменения применяются только там, где нужно.
- Включите логирование ошибок WooCommerce (включается в настройках) для отслеживания возможных проблем после изменений.
Таблица сравнений вариантов изменения поля телефона
| Метод | Код | Компромисс |
|---|---|---|
| Сделать необязательным | | Поле остается, не мешает, платежи работают |
| Удалить поле полностью | | Может вызвать ошибки в некоторых платежах и доставках |