Почему стоит удалять ненужные поля в форме оплаты WooCommerce
Избыточные поля в форме оформления заказа могут отпугивать покупателей, усложнять процесс покупки и снижать конверсию. Часто владельцам интернет-магазинов нужно убрать поля, которые по умолчанию WooCommerce не использует или которые не нужны для конкретного бизнеса. Сделать это без плагинов возможно и даже рекомендуется, чтобы избежать нагрузки и конфликтов.
Диагностика: какие поля можно и нужно удалить
Стандартные поля оплаты в WooCommerce включают такие как billing_company, billing_address_2, order_comments и другие. Для начала стоит определить, какие из них реально не нужны. Сделать это можно визуально в форме оформления заказа и сверить с требованиями бизнеса.
Для вывода полей можно использовать следующий код (например, для отладки в functions.php):
add_action('woocommerce_after_checkout_form', function() {
echo '<pre>';
print_r(WC()->checkout()->get_checkout_fields());
echo '</pre>';
});Этот код выведет все поля, сгруппированные по типам, что поможет понять структуру и имена полей.
Пошаговое решение: удаление полей из формы оплаты
Для удаления полей нужно воспользоваться фильтром woocommerce_checkout_fields. Пример удаления нескольких полей:
add_filter('woocommerce_checkout_fields', 'custom_remove_checkout_fields');
function custom_remove_checkout_fields($fields) {
// Удаляем поле "Компания"
unset($fields['billing']['billing_company']);
// Удаляем дополнительный адрес
unset($fields['billing']['billing_address_2']);
// Удаляем комментарии к заказу
unset($fields['order']['order_comments']);
return $fields;
}Данный код нужно добавить в файл functions.php активной темы или в кастомный плагин. После этого указанные поля перестанут отображаться в форме оплаты.
Удаление полей для конкретных способов оплаты
Если нужно убрать поля только для определённого метода оплаты, можно добавить условие по выбранному способу, например:
add_filter('woocommerce_checkout_fields', 'remove_fields_for_cod');
function remove_fields_for_cod($fields) {
if (isset(WC()->session) && WC()->session->get('chosen_payment_method') === 'cod') {
unset($fields['billing']['billing_company']);
}
return $fields;
}Этот код удалит поле "Компания" только при выборе оплаты при получении (cod).
Проверка результата после внедрения
Для проверки:
- Очистите кеш браузера и кеш сайта (если есть).
- Перейдите на страницу оформления заказа и убедитесь, что удалённые поля отсутствуют.
- Пройдите тестовый заказ, чтобы проверить, что процесс не ломается и нет ошибок валидации.
- Проверьте, что данные, которые приходят на почту и в админку, соответствуют ожиданиям.
Частые ошибки и как их исправлять
- Поля не удаляются: возможно, код не активен или добавлен в неправильное место. Проверьте, что функция подключена и нет синтаксических ошибок.
- Ошибки валидации после удаления: если удаляете обязательное поле, нужно снять с него атрибут
requiredили отключить валидацию. Например:
$fields['billing']['billing_company']['required'] = false;- Поля появляются после обновления WooCommerce: проверьте, что изменения в
functions.phpне перезаписываются темой или плагинами.
Практические советы по безопасности и производительности
- Не используйте плагины для удаления полей, если задача простая — это снизит нагрузку.
- Делайте изменения в дочерней теме, чтобы не потерять при обновлении.
- Тестируйте изменения на тестовом сайте перед внедрением на рабочем.
- Убедитесь, что удаление полей не повлияет на интеграции с платежными системами и CRM.
Таблица сравнения вариантов удаления полей
| Метод | Плюсы | Минусы |
|---|---|---|
Код через woocommerce_checkout_fields | Лёгкий, без плагинов, гибкий | Требует навыков программирования |
| Плагины (например, Checkout Field Editor) | Простота, визуальный интерфейс | Нагрузка, возможные конфликты |
| Изменение шаблонов WooCommerce | Полный контроль над формой | Сложно, требует глубоких знаний |