wpcodes.ru wordpress WP Codеs

WooCommerce: как отключить ненужные разделы в корзине и оформлении заказа

Диагностика: зачем отключать разделы в корзине и оформлении заказа WooCommerce?

В стандартной комплектации WooCommerce отображает несколько секций на страницах корзины и оформления заказа (checkout), например, купоны, заметки к заказу, адрес доставки, способы оплаты и пр. В некоторых проектах не все эти разделы нужны или они конфликтуют с кастомными решениями. Отключение лишних блоков упрощает интерфейс, снижает количество ошибок у пользователей и ускоряет процесс оформления.

Чаще всего требуется отключить:

  • Поле для ввода купонов (если купоны не используются или управляются отдельно)
  • Поле заметок к заказу (Customer Notes)
  • Адрес доставки (если доставка не нужна или фиксирована)
  • Методы оплаты (при использовании внешних систем или предоплаты)

Как отключить поле купонов на странице корзины и оформления заказа

Самый простой способ — убрать вывод поля купонов через фильтр или действие. WooCommerce использует хук woocommerce_before_cart для вывода формы купонов на странице корзины, и аналогично на странице оформления заказа.

Код для отключения поля купонов на странице корзины

remove_action('woocommerce_before_cart', 'woocommerce_cart_coupon_form', 10);

Код для отключения поля купонов на странице оформления заказа

add_filter('woocommerce_coupons_enabled', '__return_false');

Добавьте оба фрагмента в functions.php вашей темы или в сниппет-плагин.

Отключение поля заметок к заказу (Order Notes)

Поле заметок к заказу выводится по умолчанию на странице оформления заказа. Чтобы убрать его, можно изменить поля формы checkout с помощью фильтра woocommerce_checkout_fields.

add_filter('woocommerce_checkout_fields', function($fields) {
    if (isset($fields['order']['order_comments'])) {
        unset($fields['order']['order_comments']);
    }
    return $fields;
});

Отключение адреса доставки

Если доставка не нужна или фиксирована, можно убрать адрес доставки из формы оформления заказа. Снова используем фильтр woocommerce_checkout_fields.

add_filter('woocommerce_checkout_fields', function($fields) {
    foreach ($fields['shipping'] as $key => $field) {
        unset($fields['shipping'][$key]);
    }
    return $fields;
});

Если нужно полностью скрыть блок доставки, можно добавить CSS или использовать хук woocommerce_cart_needs_shipping для отключения флага доставки:

add_filter('woocommerce_cart_needs_shipping', '__return_false');

Отключение методов оплаты

Если вы хотите временно отключить все или некоторые методы оплаты, это можно сделать через фильтр woocommerce_available_payment_gateways.

add_filter('woocommerce_available_payment_gateways', function($gateways) {
    // Отключить все методы оплаты
    return [];

    // Или отключить конкретный метод, например, чековый платеж
    // if (isset($gateways['cheque'])) {
    //     unset($gateways['cheque']);
    // }
    // return $gateways;
});

Проверка результата после внедрения

  • Откройте страницу корзина и убедитесь, что поле для купонов отсутствует.
  • Перейдите на страницу оформления заказа, проверьте, что поле купонов и поле заметок к заказу не отображаются.
  • Если отключали адрес доставки, проверьте, что блок с адресом отсутствует и что при оформлении заказа не требуется ввод адреса.
  • Если отключали методы оплаты, убедитесь, что на странице оформления заказа не показываются способы оплаты или отображается нужный набор.

Частые ошибки и как исправить

  • Код не работает после добавления в functions.php: возможно, код добавлен в неправильный файл или синтаксис нарушен. Проверьте ошибки PHP в логах и убедитесь, что файл загружается.
  • Поле купонов все еще отображается: убедитесь, что нет плагинов, которые добавляют свои купоны или изменяют поведение стандартных хуков.
  • Адрес доставки не скрывается полностью: некоторые темы или плагины могут выводить адрес доставки через собственные шаблоны, тогда потребуется переопределение шаблонов WooCommerce.
  • Методы оплаты не меняются: проверьте, что фильтр применяется с правильным приоритетом, и что нет других плагинов, которые перезаписывают методы оплаты.

Практические советы по производительности и безопасности

  • Отключение ненужных полей и разделов уменьшает нагрузку на сервер и ускоряет загрузку страниц оформления заказа.
  • Если отключаете методы оплаты, убедитесь, что это не повлияет на логику обработки платежей в вашем магазине.
  • Всегда делайте резервную копию functions.php и других файлов перед внесением изменений.
  • Тестируйте изменения на копии сайта, чтобы избежать простоев.

Сравнение способов отключения разделов

ЗадачаКодовое решениеПлагинКомпромисс
Отключить поле купоновФильтр woocommerce_coupons_enabled и действие remove_actionWooCommerce Hide CouponsКод быстрее и легче, плагин удобнее для неразработчиков
Отключить заметки к заказуФильтр woocommerce_checkout_fields для удаления поляCheckout Field EditorПлагин позволяет настраивать другие поля, но увеличивает нагрузку
Отключить адрес доставкиУдаление полей с помощью woocommerce_checkout_fieldsFlexible ShippingПлагин решает и другие задачи с доставкой, но сложнее в настройке
Отключить методы оплатыФильтр woocommerce_available_payment_gatewaysPayment Gateways by User RoleПлагин удобен для сложных условий, но код проще для базовых случаев
×

Создай идеальный сайт – теперь на 15% дешевле!

Подобрать тему →