Диагностика проблемы: лишние контактные данные в выводе WooCommerce
В стандартном шаблоне WooCommerce в разделе оформления заказа (checkout) и в профиле пользователя часто выводятся контактные данные, такие как телефон, адрес электронной почты, адрес доставки и другие. Иногда требуется убрать или скрыть отдельные поля, например, номер телефона или дополнительный адрес, чтобы упростить интерфейс или соответствовать бизнес-требованиям.
Чтобы понять, какие контакты выводятся и как они управляются, нужно изучить шаблоны WooCommerce и хуки, отвечающие за отображение полей формы и информации профиля.
Как WooCommerce выводит контактные поля: обзор
WooCommerce использует функции и хуки для отображения полей формы оформления заказа и данных профиля:
woocommerce_checkout_fields— фильтр для изменения полей формы оформления заказа;woocommerce_billing_fieldsиwoocommerce_shipping_fields— подмножества полей для адресов;- Шаблоны
form-billing.phpиform-shipping.phpотвечают за вывод полей.
Пошаговое решение: удаляем ненужные контактные поля из оформления заказа
Чтобы убрать поле, например, телефон (billing_phone), нужно добавить фильтр в файл functions.php вашей темы или дочерней темы:
add_filter('woocommerce_checkout_fields', 'custom_remove_checkout_fields');
function custom_remove_checkout_fields($fields) {
// Удаляем телефон из биллинга
if (isset($fields['billing']['billing_phone'])) {
unset($fields['billing']['billing_phone']);
}
// Можно удалить и другие поля, например, company
// unset($fields['billing']['billing_company']);
return $fields;
}Если нужно убрать поле из адреса доставки:
add_filter('woocommerce_checkout_fields', 'custom_remove_shipping_phone');
function custom_remove_shipping_phone($fields) {
if (isset($fields['shipping']['shipping_phone'])) {
unset($fields['shipping']['shipping_phone']);
}
return $fields;
}Обратите внимание, что поле shipping_phone по умолчанию в WooCommerce отсутствует, но если оно добавлено кастомными плагинами, такой код поможет удалить его.
Удаление контактов из профиля пользователя WooCommerce
Чтобы убрать отображение поля телефона в личном кабинете, используйте фильтр woocommerce_customer_meta_fields:
add_filter('woocommerce_customer_meta_fields', 'remove_phone_from_account');
function remove_phone_from_account($fields) {
if (isset($fields['billing']['fields']['billing_phone'])) {
unset($fields['billing']['fields']['billing_phone']);
}
return $fields;
}Проверка результата после внедрения
1. Перейдите на страницу оформления заказа (checkout) на сайте. Поле телефона должно исчезнуть из формы.
2. В личном кабинете WooCommerce зайдите в раздел редактирования адреса биллинга — телефон не должен отображаться.
3. Проверьте, нет ли ошибок в консоли браузера и на сервере (логи PHP). Если форма работает корректно и поле отсутствует — решение успешно.
Частые ошибки и как их исправить
- Поле не исчезает: Возможно, код добавлен в неправильный файл или активна кэш-система (кэш-плагины, серверный кэш). Очистите кэш и убедитесь, что
functions.phpв активной теме. - Ошибка PHP: Проверьте синтаксис и наличие функции с правильным именем. Ошибки на сайте могут привести к белому экрану.
- Поле добавлено плагином: Некоторые плагины добавляют поля вне стандартных хуков. В этом случае нужно искать документацию плагина или фильтры для удаления.
Практические советы по безопасности и производительности
- Не удаляйте критичные для оплаты поля (email, имя), это может нарушить работу WooCommerce.
- Добавляйте код в дочернюю тему, чтобы избежать потерь при обновлении темы.
- Используйте
isset()передunset(), чтобы избежать предупреждений. - Тестируйте на локальной копии сайта перед внедрением на продакшн.
- Для длительной поддержки кода используйте комментарии с описанием, какие поля удалены и зачем.
Сравнение способов удаления полей: код или плагины
| Метод | Преимущества | Недостатки | Когда использовать |
|---|---|---|---|
| Код в functions.php | Полный контроль, бесплатно, быстро | Требует навыков, риск ошибок | Если умеете работать с PHP и хотите минимальный набор изменений |
| Плагины (Checkout Field Editor) | Удобный интерфейс, больше возможностей | Зависимость от плагина, нагрузка на сайт | Если нужны частые изменения без кода, или не хотите писать код |