Почему нужно удалить разделы "Доставка" и "Оплата" на странице оформления заказа WooCommerce
В некоторых специфических сценариях интернет-магазина на WooCommerce может потребоваться убрать стандартные блоки "Доставка" и "Оплата" на странице оформления заказа (checkout). Например, если магазин продаёт цифровые товары без доставки, или если способ оплаты и доставки фиксированы и не требуют выбора покупателем.
Убирать эти блоки нужно аккуратно, чтобы не нарушить логику оформления заказа и не вызвать конфликтов с другими плагинами.
Диагностика проблемы: как проверить текущие блоки на странице оформления заказа
Для начала стоит увидеть, какие именно секции выводятся на странице оформления заказа и какие хуки отвечают за их отображение.
- Откройте тему и найдите файл
woocommerce/checkout/form-checkout.phpили шаблон checkout. - Обратите внимание на хуки:
woocommerce_checkout_before_customer_details,woocommerce_checkout_billing,woocommerce_checkout_shipping,woocommerce_checkout_payment. - Для диагностики временно добавьте следующий код в functions.php вашей темы для лога действий хуков:
add_action('woocommerce_checkout_before_customer_details', function() { error_log('Hook: before_customer_details'); });
add_action('woocommerce_checkout_shipping', function() { error_log('Hook: shipping'); });
add_action('woocommerce_checkout_payment', function() { error_log('Hook: payment'); });Затем обновите страницу оформления заказа и проверьте лог ошибок PHP (например, error_log), чтобы понять, какие блоки вызываются.
Пошаговое решение: как убрать блоки "Доставка" и "Оплата" в WooCommerce
Для удаления блоков нужно убрать соответствующие действия, которые выводят эти разделы.
Удаление блока "Доставка"
Блок с настройками доставки выводится через хук woocommerce_checkout_shipping.
remove_action('woocommerce_checkout_shipping', 'woocommerce_checkout_shipping');Однако вызов с таким же именем функции не сработает, потому что функция вывода — это шаблон, а не функция с именем woocommerce_checkout_shipping. Поэтому правильнее отключить вывод через фильтр.
Лучший способ — отключить поле доставки, если она не нужна, или скрыть блок через CSS.
Если доставка не нужна, можно убрать все методы доставки так:
add_filter('woocommerce_cart_needs_shipping', '__return_false');Это заставит WooCommerce не показывать блок доставки.
Удаление блока "Оплата"
Чтобы убрать блок оплаты, можно отменить вывод формы оплаты на странице checkout.
remove_action('woocommerce_checkout_order_review', 'woocommerce_checkout_payment', 20);Добавьте этот код в functions.php вашей темы или в плагин для сайта.
Полный пример решения в functions.php
add_filter('woocommerce_cart_needs_shipping', '__return_false');
add_action('wp', function() {
if (is_checkout()) {
remove_action('woocommerce_checkout_order_review', 'woocommerce_checkout_payment', 20);
}
});Проверка результата после внедрения
После добавления кода:
- Обновите страницу оформления заказа.
- Проверьте, что блок "Доставка" больше не отображается — блок с выбором адреса и способов доставки должен исчезнуть.
- Убедитесь, что блок "Оплата" с выбором метода оплаты не выводится.
- Протестируйте оформление заказа, чтобы убедиться, что процесс не прерывается и заказ создаётся корректно.
Если блоки всё ещё видны, проверьте, нет ли кэширования страниц или плагинов, которые могут влиять на вывод.
Частые ошибки и как их исправить
- Код не работает, блоки остаются
Возможно, код добавлен не в активную тему или плагин. Убедитесь, что вы редактируетеfunctions.phpтекущей активной темы или используете плагин для кастомных функций. - Блок оплаты исчез, но заказ не создаётся
Удаление блока оплаты может нарушить логику оформления заказа, если оплата обязательна. Проверьте, что в WooCommerce включены методы оплаты, и что вы не удалили критичные для процесса хуки. - В блоке доставки остаются поля, хотя методы доставки отключены
Отключите также методы доставки в настройках WooCommerce (WooCommerce > Настройки > Доставка). - Кэширование мешает увидеть изменения
Очистите кэш браузера, кэш плагинов и серверный кэш (например, Varnish или CDN).
Практические советы по безопасности и производительности
- Не отключайте критичные хуки, если не уверены, как это повлияет на оформление заказа.
- Проверяйте совместимость с плагинами оплаты и доставки, чтобы не сломать логику.
- Для удаления блоков лучше использовать фильтры WooCommerce, а не просто скрывать элементы CSS — это предотвращает ошибки при обработке заказа.
- Используйте отладку
WP_DEBUGдля проверки ошибок после изменений.
Альтернативы: скрытие через CSS vs удаление через код
| Метод | Преимущества | Недостатки |
|---|---|---|
| Удаление через код (хуки и фильтры) | Правильное отключение логики, меньше шансов сломать оформление заказа | Требуется понимание кода и WooCommerce, возможны ошибки без тестирования |
| Скрытие через CSS (display:none) | Простое решение, не требует PHP знаний | Блоки остаются в DOM, могут влиять на логику, SEO и доступность |