Как удалить разделы "Доставка" и "Оплата" на странице оформления заказа WooCommerce

Почему нужно удалить разделы "Доставка" и "Оплата" на странице оформления заказа 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 и доступность
Как изменить URL адрес постов в WordPress без пересмотра ссылок
09.11.2025
Как удалить локальные стили в WordPress для оптимизации загрузки
15.04.2026
Автоподгрузка постов в WordPress без плагинов
25.03.2026
Как удалить meta robots noindex для отдельных страниц WordPress
05.01.2026
Как отключить Emoji в WordPress эффективно и без плагинов
14.03.2026