WooCommerce: как установить ограничение по весу товаров в корзине

Диагностика задачи: зачем ограничивать общий вес товаров в корзине WooCommerce

В интернет-магазинах на WooCommerce часто возникает необходимость ограничить общий вес товаров в корзине. Причины могут быть разными: ограничения службы доставки, логистические нюансы или особенности упаковки. Стандартно WooCommerce не предоставляет такой функционал, поэтому задача решается через кастомный код.

Пошаговое решение: установка ограничения по весу в корзине WooCommerce

1. Получение общего веса товаров в корзине

Первым делом нужно посчитать суммарный вес всех товаров, учитывая количество каждого из них. Для этого в хуке woocommerce_check_cart_items будет удобное место, так как он вызывается при проверке корзины перед оформлением заказа.

2. Добавление проверки и вывода ошибки

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

3. Пример кода для functions.php вашей темы или плагина

add_action('woocommerce_check_cart_items', 'limit_cart_weight_woocommerce');
function limit_cart_weight_woocommerce() {
    $max_weight = 10; // Максимальный вес в килограммах
    $total_weight = 0;

    foreach (WC()->cart->get_cart() as $cart_item) {
        $product = $cart_item['data'];
        $qty = $cart_item['quantity'];
        $weight = (float) $product->get_weight();
        $total_weight += $weight * $qty;
    }

    if ($total_weight > $max_weight) {
        wc_add_notice(sprintf('Общий вес товаров в корзине (%.2f кг) превышает максимально допустимый (%.2f кг). Пожалуйста, уменьшите количество товаров.', $total_weight, $max_weight), 'error');
    }
}

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

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

Если ограничение не срабатывает, проверьте:

  • Активен ли код (themes/functions.php или плагин)
  • Корректно ли заданы веса у товаров (раздел «Данные о доставке» в карточке товара)
  • Не конфликтуют ли другие плагины с корзиной WooCommerce

Частые ошибки при установке ограничения по весу и как их исправить

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

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

  • Используйте фильтр веса товаров (get_weight) без прямого обращения к базе, чтобы избежать лишних запросов.
  • Ограничение веса лучше делать именно на этапе оформления заказа, чтобы не влиять на скорость загрузки каталога.
  • При большом количестве товаров в корзине кэширование результатов вычисления веса можно сделать через Transients, если вес товаров меняется редко.

Сравнение способов реализации ограничения по весу в WooCommerce

МетодГде реализуетсяПлюсыМинусы
Кастомный код через хук woocommerce_check_cart_itemsfunctions.php или плагинБыстро, гибко, без дополнительных плагиновТребует знаний PHP, возможны ошибки при обновлениях
Плагин ограничения веса (например, "WooCommerce Weight Based Shipping")Сторонний плагинГотовое решение, настройки через UI, поддержка разработчикаПлатные версии, дополнительные нагрузка, возможные конфликты

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
WooCommerce: автоматическое отключение платёжных систем по условиям
12.05.2026
Как удалить meta tag generator в WordPress: практическое руководство
21.11.2025
Как использовать хуки в WordPress для автоматизации и расширения функционала
04.12.2025
Как избежать конфликтов между плагинами WordPress: практические советы и примеры
16.12.2025
WooCommerce: как запретить изменение адреса доставки после оформления заказа
26.05.2026
×
Делай сайт лучше!!

-20% на премиум темы и плагины

Использовать скидку ⋙