WooCommerce Per Product Shipping - Плагин WordPress
Определите отдельные затраты на доставку для каждого продукта, которые объединяются при оформлении заказа, чтобы получить общую стоимость доставки.

Особенности плагина
Плагин - это мощный инструмент, позволяющий пользователям применять настраиваемые тарифы доставки для каждого отдельного продукта в их магазине WooCommerce. Благодаря этой функциональности владельцы магазинов могут устанавливать уникальные стоимости доставки на основе веса продукта, его размеров, пункта назначения или любых других специфических требований, которые у них могут быть. Такой уровень гибкости обеспечивает точные расчеты доставки и помогает улучшить общее удовлетворение и лояльность клиентов. Кроме того, плагин легко интегрируется в существующую настройку WooCommerce, предоставляя пользовательский интерфейс для эффективной настройки настроек доставки на уровне продукта.
Его обширные функции включают возможность присваивать различные методы доставки конкретным продуктам, что дает электронной коммерции полный контроль над тем, как каждый товар отправляется. Эта возможность гранулярной настройки позволяет владельцам магазинов настраивать варианты доставки так, чтобы удовлетворить разнообразные потребности клиентов, в конечном итоге приводя к более персонализированному опыту покупок. Более того, плагин позволяет рассчитывать стоимость доставки в реальном времени на основе местоположения клиента, обеспечивая прозрачность и точность в оценках стоимости доставки на протяжении процесса оформления заказа.
Этот важный инструмент оптимизирует управление логистикой доставки для онлайн-ритейлеров, устраняя необходимость в ручных расчетах и упрощая весь процесс доставки. Автоматизируя расчет стоимости доставки на уровне продукта, он экономит время и снижает риск ошибок, в конечном итоге оптимизируя эффективность операций электронной коммерции. Кроме того, WooCommerce Per Product Shipping обеспечивает совместимость с различными платежными шлюзами, гарантируя бесперебойный поток транзакций от выбора продукта до успешного размещения заказа.
Интуитивная панель управления предоставляет пользователям четкое представление о их настройках доставки по продукту, что позволяет легко отслеживать и вносить корректировки при необходимости. Владельцы магазинов могут быстро обновлять правила доставки, тарифы или методы непосредственно из панели администратора WordPress, не требуя расширенных технических знаний. Эта доступность дает бизнесам возможность адаптировать свои стратегии доставки в режиме реального времени, оперативно реагируя на рыночные требования и предпочтения клиентов, что в конечном итоге улучшает общий опыт покупок для своей клиентуры.
Кроме того, плагин повышает общую масштабируемость магазинов WooCommerce, обеспечивая бизнесам возможность расширять свой ассортимент продукции и возможности доставки, не жертвуя эффективностью или точностью. Этот фактор масштабируемости критичен для развивающихся электронных компаний, стремящихся разнообразить свой ассортимент продукции и сохранить высокий уровень качества обслуживания. Предлагая надежное и гибкое решение доставки на уровне продукта, он позиционирует онлайн-ритейлеров для устойчивого роста и успеха в конкурентной среде электронной коммерции.
Спецификации:
| Дата выхода: | 11-10-2020 | |
| Дата обновления: | 20-05-2026 | |
| Тип расширения: | Платный | |
| Лицензия: | GPL | |
| Тематика: | Интернет-коммерция для WooCommerce | |
| Совместимость: | W5.x W6.x | |
| Включает в себя: | Плагин | |
| Языковые пакеты: |
|
|
| Разработчик: | WooCommerce Plugins | |
| Рейтинг: | ||
Скачивание по подписке!
Вам необходимо авторизоваться на сайте и приобрести клубную подписку!
Поделись с друзьями!
Руководство по настройке WooCommerce Per Product Shipping для точной доставки по товарам
WooCommerce Per Product Shipping нужен не для красивого описания доставки, а для практичной задачи: назначить отдельную стоимость доставки конкретному товару или вариации и затем корректно показать итог покупателю в корзине и на оформлении заказа. В этом руководстве разберём, как встроить плагин в уже настроенную доставку WooCommerce, когда использовать его как добавку к существующим методам, когда включать отдельный метод доставки, как заполнять таблицу ставок, как проверять результат и где чаще всего возникают ошибки.
Материал рассчитан на владельца магазина, администратора WooCommerce или разработчика, которому нужно не просто активировать расширение, а понять механику расчёта до первого реального заказа. Per-product доставка легко кажется простой: включили чекбокс, добавили строку с ценой, сохранили. На практике важны порядок строк, режим расчёта, зона доставки, вариации, бесплатная доставка, локальный самовывоз, кеширование корзины и то, как магазин должен вести себя при смешанной корзине.
Здесь не будет инструкций по покупке лицензии и не будет попытки заменить официальную документацию. Руководство показывает рабочую последовательность: подготовка, установка, настройка, типовой сценарий для крупногабаритного товара, проверка на публичной части сайта, диагностика и выбор альтернатив. Если магазин уже использует сложные тарифные таблицы, живые ставки перевозчиков или отдельные правила по ролям пользователей, вы также поймёте, где Per Product Shipping уместен, а где лучше смотреть на другой класс решений.
Как работает доставка по конкретному товару
Основная идея расширения простая: ставка хранится не только в зоне доставки, а ещё и у товара. В карточке товара или у отдельной вариации появляется таблица, где можно задать страну, штат или область, почтовый индекс, стоимость за строку корзины и стоимость за каждую единицу товара. Когда покупатель вводит адрес, WooCommerce сначала определяет подходящую зону доставки, затем методы в этой зоне, а расширение добавляет или рассчитывает стоимость по товарным правилам.
Важно разделить два режима, потому что от них зависит поведение всего checkout. В первом режиме per-product стоимость работает как надбавка к другим методам доставки. Это удобно, если большая часть каталога уже доставляется обычным Flat Rate, Free Shipping или живой ставкой перевозчика, а отдельный товар требует дополнительной упаковки, отдельной коробки или другого тарифа. Во втором режиме Per Product Shipping становится самостоятельным методом. Тогда все продуктовые стоимости складываются в один метод доставки, и по умолчанию покупателю не предлагаются другие методы в той же зоне.
Надбавка к существующим методам
Режим надбавки лучше подходит для магазинов, где есть базовая доставка и несколько исключений. Например, магазин продаёт обычные аксессуары, но один товар отправляется в усиленной упаковке. Базовый Flat Rate покрывает стандартную доставку, а Per Product Shipping добавляет к конкретному товару фиксированную сумму. В карточке товара для этого используется параметр Adjust Shipping Costs: если он включён, продуктовая ставка прибавляется к другим рассчитанным методам доставки, кроме сценариев, где официальная логика исключает конкретный метод.
Такой подход не ломает привычную структуру зон. Администратор по-прежнему управляет географией через WooCommerce > Settings > Shipping, а отдельные товары получают свои исключения. Главная проверка здесь - смешанная корзина: добавьте товар с per-product ставкой и обычный товар, затем убедитесь, что итоговая сумма выглядит ожидаемо и не создаёт второй непонятный вариант доставки.
Самостоятельный метод доставки
Самостоятельный режим полезен, если доставка почти полностью зависит от состава корзины. В этом случае метод Per-Product добавляется в нужную shipping zone, получает свой заголовок, налоговый статус, значения по умолчанию и handling fee. Покупатель видит один метод, а стоимость внутри него формируется суммой товарных ставок. Такой режим проще объяснить пользователю, когда магазин продаёт несколько товаров с заранее известной стоимостью отправки.
У самостоятельного режима есть важное ограничение: когда он выбран, другие методы доставки по умолчанию не предлагаются. Это нормально для магазина с жёсткой продуктовой логистикой, но может быть неожиданно, если вы хотели оставить покупателю выбор между стандартной доставкой и самовывозом. Для такого сценария официальная документация указывает фильтр, который разрешает конкретные дополнительные методы, но применять его стоит только после тестирования и только через безопасное место для сниппетов.
Строковая и поштучная стоимость
В таблице ставок есть два разных поля, которые часто путают. Line Cost применяется к строке корзины и не умножается на количество. Если покупатель кладёт две одинаковые единицы товара в одну строку, line cost остаётся одним значением. Item Cost применяется к каждой единице товара и умножается на количество. Для товара, который едет в одной коробке независимо от количества, чаще используют line cost. Для товара, где каждая единица добавляет отдельный вес, место или упаковку, логичнее item cost.
Мини-проверка: перед запуском задайте тестовую ставку так, чтобы line cost и item cost отличались. Добавьте одну, две и три единицы товара в корзину. Если итог меняется не так, как вы ожидали, проблема обычно не в checkout, а в неверно выбранной логике строки или единицы.
Кому подойдёт этот плагин и где он будет лишним
WooCommerce Per Product Shipping лучше всего раскрывается в магазинах, где исключения важнее сложной тарифной матрицы. Типичный пример - каталог из обычных товаров и небольшой группы тяжёлых, крупногабаритных, хрупких или нестандартно упакованных позиций. Для таких товаров нужно добавить фиксированную сумму, которая зависит от страны, региона или почтового индекса. Плагин позволяет сделать это ближе к самому товару, а не прятать исключение в общей таблице shipping classes.
Расширение также удобно для маленьких каталогов с заранее известными ставками. Если у вас пять физических товаров и каждый имеет понятную стоимость доставки по нескольким направлениям, отдельная таблица у товара может быть проще, чем полноценный table rate plugin. Администратор открывает нужный товар, включает per-product shipping, добавляет строки и сразу видит, где хранятся исключения.
Подходящие сценарии
- Крупногабаритный товар с доплатой. Базовый метод доставки остаётся активным, а конкретный товар добавляет фиксированную стоимость упаковки или перевозки.
- Небольшой каталог с фиксированными ставками. Стоимость отправки зависит от товара и адреса, но не требует сложных условий по весу, цене, роли пользователя или времени доставки.
- Вариации с разной логистикой. У одной модели могут быть разные размеры или комплектации, и отдельная вариация должна переопределять ставку родительского товара.
- CSV-обновление ставок. Если ставки нужно массово загрузить для товаров, встроенный импорт по product ID помогает быстрее заполнить таблицы.
Когда лучше выбрать другой подход
Если доставка зависит от веса корзины, габаритов, суммы заказа, количества товаров, shipping class, роли пользователя, дня недели или сложной комбинации условий, Per Product Shipping может оказаться слишком прямолинейным. Он решает задачу ставки у товара, но не заменяет полноценную систему условных тарифов. В таких случаях чаще смотрят на Table Rate Shipping, Flexible Shipping PRO или Conditional Shipping and Payments.
Плагин также не решает задачи упаковки по коробкам, печати этикеток, живых тарифов перевозчиков, расчёта расстояния от склада, split shipping по нескольким адресам и управления остатками на складах. Эти функции относятся к другим расширениям. Хорошее правило выбора: если вы можете описать задачу фразой "у этого товара своя стоимость доставки", Per Product Shipping подходит. Если фраза превращается в цепочку условий "если вес больше, если роль такая, если зона такая, если сумма заказа меньше", лучше брать инструмент с условной логикой.
Что проверить перед установкой
Перед установкой плагина полезно проверить не только версию WordPress или WooCommerce, но и саму модель доставки магазина. Расширение работает внутри WooCommerce shipping zones, поэтому ошибки в зонах, неверный порядок регионов или отсутствующие методы будут проявляться как ошибки Per Product Shipping, хотя источник проблемы находится уровнем выше.
Начните с карты доставки. Выпишите, куда магазин отправляет товары, какие методы доступны в каждой зоне, есть ли бесплатная доставка, локальный самовывоз и товары, для которых доставка не должна рассчитываться. Затем отметьте товары-исключения. Не нужно сразу включать per-product ставку на половине каталога. Чем больше строк вы добавите в карточки товаров, тем сложнее будет поддерживать изменения и объяснять итоговую сумму менеджеру магазина.
Проверка shipping zones
Откройте WooCommerce > Settings > Shipping > Shipping zones и убедитесь, что зоны расположены от более точной к более широкой. WooCommerce сопоставляет покупателя с первой подходящей зоной, поэтому зона для конкретного города или набора индексов должна стоять выше зоны страны. Если порядок нарушен, покупатель может попасть в широкую зону и не увидеть нужный метод доставки.
- Проверьте, что в нужной зоне есть хотя бы один активный shipping method.
- Убедитесь, что
Rest of the worldиспользуется осознанно, а не случайно закрывает все неучтённые адреса. - Проверьте почтовые индексы и wildcard-значения, если ставки зависят от индекса.
- Сохраните пример тестового адреса для каждой важной зоны, чтобы потом быстро повторить проверку.
Проверка товаров
Товар должен быть физическим. Если продукт отмечен как Virtual, доставка для него не рассчитывается. Для обычных товаров стоит проверить вес, габариты и shipping class, даже если сам Per Product Shipping не обязан использовать все эти данные. Они помогают понять общую логистику и быстро отличить проблему товарной ставки от проблемы другого shipping method.
Для вариативных товаров заранее решите, где будет храниться ставка: на родительском товаре или на конкретной вариации. Официальная документация подчёркивает, что ставки вариации переопределяют ставки товара. Это удобно, но при неаккуратной настройке можно получить ситуацию, когда родительская ставка выглядит правильной, а checkout берёт другое значение, потому что у выбранной вариации включена собственная таблица.
Проверка checkout и кеша
Ставки доставки должны пересчитываться при изменении адреса, количества и состава корзины. Поэтому страницы корзины, оформления заказа и личного кабинета не должны кешироваться как обычные статические страницы. Если магазин использует кеширующий плагин, серверный кеш или CDN, проверьте исключения для cart и checkout до тестирования. Иначе вы можете увидеть старую сумму и начать искать ошибку в настройках Per Product Shipping, хотя браузер или кеш показывают устаревший фрагмент.
Установка и первичная проверка после активации
Установка выполняется как для обычного ZIP-плагина WordPress: откройте Plugins > Add New > Upload Plugin, выберите архив, нажмите Install Now, затем Activate. После активации не начинайте сразу заполнять все товары. Сначала создайте один тестовый сценарий, где результат легко посчитать вручную. Это снижает риск, что вы массово внесёте неверную логику в каталог.
Лучший первый тест - отдельный простой товар без вариаций. Выберите товар, который не является виртуальным, имеет цену, доступен в наличии и попадает в обычный процесс покупки. Создайте или используйте shipping zone с понятным адресом, например отдельную локальную зону с Flat Rate. После этого добавьте per-product ставку только этому товару и проверьте, как она влияет на корзину.
Порядок первичной проверки
- Откройте нужную shipping zone и убедитесь, что в ней есть рабочий метод доставки.
- Откройте товар в
WooCommerce > Productsи перейдите в блокProduct data. - На вкладке
ShippingвключитеEnable per-product shipping. - Добавьте одну строку ставки для тестовой страны или оставьте location-поля как wildcard, если нужно проверить общий случай.
- Сохраните товар, добавьте его в корзину и введите адрес, который точно попадает в нужную зону.
- Сравните итоговую доставку с расчётом вручную.
Если на этом этапе сумма не совпала, не переходите к вариациям и CSV. Сначала выясните, совпал ли адрес с правильной зоной, включён ли нужный method, не помечен ли товар как virtual, не конфликтует ли бесплатная доставка и не остался ли в корзине старый товар с другой ставкой.
Какие признаки говорят, что установка прошла нормально
После активации в карточке физического товара должен появиться параметр включения per-product shipping и таблица ставок. В shipping zone должен быть доступен метод Per-Product, если вы настраиваете самостоятельный режим. На публичной части сайта стоимость должна меняться при изменении адреса или количества, если ставка завязана на item cost. Если всё это видно, базовая интеграция работает, и дальше можно переходить к реальной структуре ставок.
Настройка зоны доставки и режима расчёта
Самая частая ошибка при работе с этим расширением - сразу идти в товар и забывать о shipping zone. Для режима надбавки это иногда проходит незаметно, потому что уже существующий метод доставки отображается в checkout. Для standalone-режима без добавления метода Per-Product в зону покупатель может вообще не увидеть ожидаемую доставку. Поэтому настройку стоит начинать с зоны, а не с товара.
Добавление метода Per-Product в shipping zone
Откройте WooCommerce > Settings > Shipping, выберите зону и нажмите Add shipping method. В списке должен быть метод Per-Product. Добавьте его, откройте настройки метода и решите, будет ли он standalone. Если вы используете только надбавки к другим методам, отдельный метод может быть не нужен для старого multiple-methods сценария, но для самостоятельного режима он обязателен.
В standalone-настройках проверьте Method Title, Tax Status, Default product cost, handling fee per product и handling fee per order. Заголовок должен быть понятен покупателю. Вместо технического "Per-Product" лучше использовать нейтральную формулировку вроде "Доставка по товарам" или "Индивидуальная доставка", если она соответствует правилам магазина. Налоговый статус выбирайте по налоговой модели магазина и требованиям вашей юрисдикции, не по примеру из чужого руководства.
Default product cost и handling fee
Default product cost отвечает за товары, у которых нет собственной ставки. Это полезный fallback, но его легко настроить слишком широко. Если вы хотите, чтобы доставка рассчитывалась только для явно настроенных товаров, не превращайте default cost в скрытый универсальный тариф без проверки. Добавьте в корзину товар без per-product ставки и убедитесь, что fallback действительно нужен.
Handling fee per product и handling fee per order решают разные задачи. Первая добавляется к каждому товару, вторая - один раз к заказу. Не используйте обе настройки просто "для запаса". Если магазин берёт плату за упаковку каждой единицы товара, подходит per product. Если есть фиксированная стоимость обработки заказа, подходит per order. После изменения handling fee всегда проверяйте корзину с разным количеством товаров, иначе итог может выглядеть завышенным.
Ignore Free Shipping и Ignore Local Pickup
Параметры Ignore Free Shipping и Ignore Local Pickup нужны, когда standalone-метод должен подавлять другие варианты в той же зоне. Это особенно важно для товаров, которые нельзя отправить бесплатно или забрать стандартным способом. Но включать эти параметры нужно осознанно. Если покупатель ожидает самовывоз для обычных товаров в смешанной корзине, а один товар включает per-product доставку, UX может стать спорным.
Проверяйте не только один товар, а смешанную корзину: товар с индивидуальной ставкой, обычный товар, товар с free shipping условием и товар для самовывоза, если такие сценарии есть. Цель настройки - не максимальное количество правил, а предсказуемое поведение checkout.
Тарифы в карточке товара и вариациях
После настройки зоны переходите к товару. В карточке товара откройте вкладку Shipping в блоке Product data и включите Enable per-product shipping. После этого появится таблица ставок и параметр Adjust Shipping Costs. В этой точке вы фактически решаете, будет ли ставка товара добавляться к другим shipping methods или использоваться внутри standalone-логики.
Как заполнять таблицу ставок
Строка таблицы описывает условие местоположения и две части стоимости. Location-поля используют двухбуквенные country code и state code, а postcode может быть конкретным значением или wildcard. Если поле не нужно, его оставляют пустым или используют wildcard там, где это предусмотрено логикой. Но не стоит делать первую строку слишком общей, если ниже есть более точные строки: расширение ищет подходящую строку сверху вниз, и сработает только одна строка для адреса покупателя.
Country Codeиспользуйте для страны, напримерUSилиGB.State/Country Codeзаполняйте, если нужно ограничить ставку регионом внутри страны.Zip/Postal Codeприменяйте для конкретного индекса или wildcard-группы вродеPE*.Line Costставьте для стоимости одной строки корзины.Item Costставьте для стоимости, которая умножается на количество единиц товара.
Порядок строк важнее, чем кажется
Если у вас есть строка для всей страны и строка для конкретного индекса, более точная строка должна стоять выше. Иначе широкое правило перехватит адрес раньше, чем WooCommerce дойдёт до узкого правила. В админке строки можно переставлять с помощью ручки сортировки. После перестановки обязательно сохраните товар и повторите тест с адресом, который должен попасть в узкое правило.
Хорошая практика - держать таблицу читаемой. Сначала самые точные направления, затем регион, затем страна, затем общий fallback. Если ставок становится слишком много, подумайте об импорте CSV или о другом плагине, потому что сотни строк в карточке товара трудно сопровождать вручную.
Вариации переопределяют родительский товар
Для вариативных товаров ставка может быть задана на уровне вариации. В документации указано, что variation rates override product rates. Это полезно, когда, например, маленький размер едет обычной посылкой, а большой размер требует отдельной упаковки. Но это также источник ошибок: администратор смотрит на ставку родительского товара, а checkout применяет таблицу выбранной вариации.
Для вариаций используйте понятную стратегию. Если различий по доставке нет, храните ставку на родительском товаре и не включайте отдельную таблицу у каждой вариации. Если различия есть, включайте per-variation shipping только там, где ставка действительно отличается. После настройки проверьте минимум две вариации: одну с собственной ставкой и одну без неё.
Импорт CSV и сопровождение ставок в каталоге
CSV-импорт нужен, когда ставки повторяются на нескольких товарах или их слишком много для ручного ввода. Per Product Shipping использует шесть обязательных колонок: product id, country code, state code, postcode, line cost и item cost. Если структура файла нарушена, импорт не сработает. Если product ID не совпадает с товаром в текущем магазине, ставка попадёт не туда или не будет применена.
Перед импортом сделайте небольшой тестовый файл на один товар и одну строку ставки. Не начинайте с полного каталога. Загрузите файл, проверьте, что ставка появилась в карточке товара, затем добавьте товар в корзину и проверьте checkout. Только после этого масштабируйте файл на остальные товары.
Import CSV и Import CSV override
Обычный import добавляет строки, а override обновляет совпадающие импортированные значения. Это различие важно при регулярном обновлении ставок. Если вы каждый раз добавляете новые строки вместо обновления старых, таблица может быстро стать нечитаемой, а широкие старые правила будут мешать новым. Если используете override, заранее проверьте, какие строки будут считаться совпадающими, и сохраните исходный CSV как точку отката.
Bulk-enable через стандартный импорт WooCommerce
Отдельная особенность: импорт ставок через Per Product Shipping не включает автоматически сам параметр per-product shipping у товара. Для массового включения используется стандартный Product CSV Importer and Exporter WooCommerce с нужными колонками обновления товаров. Это нормальная логика, но её часто пропускают. В итоге ставки вроде бы загружены, а товар не применяет их, потому что сам переключатель не включён.
Практичный порядок такой: сначала убедитесь, что CSV со ставками корректно импортируется для одного включённого товара; затем подготовьте CSV для обновления товаров и включите нужный параметр; затем повторите checkout-тест. Не смешивайте в одну операцию изменение товара, импорт ставок и перестройку зон доставки. Когда меняются три слоя сразу, диагностика становится медленной.
Как поддерживать ставки без хаоса
Храните мастер-таблицу ставок вне WordPress, например в защищённой таблице у менеджера логистики. В ней должны быть product ID, SKU для человеческой проверки, страна, регион, индекс, line cost, item cost и комментарий к правилу. Product ID нужен для импорта, а SKU помогает не ошибиться при переносе между магазинами, потому что ID в разных окружениях часто отличаются.
Если вы переносите ставки с тестового сайта на рабочий, обязательно замените product ID на значения рабочего магазина. Официальная документация отдельно предупреждает об этом для импорта на другой продукт. Для большого каталога полезно сначала экспортировать товары из рабочего магазина, сопоставить SKU и ID, а уже потом формировать CSV ставок.
Практический сценарий: доплата за крупный товар
Разберём сценарий, который хорошо соответствует назначению WooCommerce Per Product Shipping. В магазине уже есть базовая доставка по стране через Flat Rate. Большая часть товаров отправляется стандартно. Один товар крупный, требует усиленной упаковки и должен добавлять фиксированную доплату. Для соседнего региона доплата меньше, для отдалённого региона больше. Покупатель должен видеть итоговую доставку в одном checkout без ручного пересчёта менеджером.
Цель
Нужно сохранить существующий Flat Rate и добавить продуктовую стоимость только к крупному товару. Если покупатель берёт обычный товар, стоимость доставки не меняется. Если он добавляет крупный товар, итог увеличивается на ставку из таблицы. Если покупатель меняет адрес, ставка должна выбрать строку, подходящую для его региона или почтового индекса.
Подготовка
- В shipping zone уже есть рабочий Flat Rate.
- Крупный товар не помечен как
Virtual. - У вас есть тестовый адрес для базовой зоны и тестовый адрес для региона с отдельной ставкой.
- Страницы cart и checkout исключены из кеширования.
Шаги настройки
- Откройте крупный товар в
WooCommerce > Products. - Перейдите в
Product data > Shipping. - Включите
Enable per-product shipping. - Включите
Adjust Shipping Costs, чтобы ставка добавлялась к Flat Rate. - Добавьте строку для более точного региона или индекса и укажите line cost, если доплата не зависит от количества.
- Добавьте более широкую строку для страны как fallback.
- Сохраните товар и очистите кеш корзины, если он есть.
Проверка
Добавьте в корзину только обычный товар и запишите стоимость доставки. Затем добавьте крупный товар в количестве 1 и проверьте, что доставка увеличилась на line cost. Увеличьте количество крупного товара до 2. Если вы использовали line cost, сумма продуктовой доплаты не должна удвоиться. Если использовали item cost, должна. Затем смените адрес на регион с другой ставкой и убедитесь, что checkout выбрал нужную строку.
Нюанс смешанной корзины
В смешанной корзине покупатель должен понимать итог. Если доставка стала выше, но название метода осталось обычным, добавьте понятное описание доставки на странице условий магазина или переименуйте shipping method так, чтобы он не обещал "стандартную доставку" там, где есть доплата за крупный товар. Не нужно перегружать checkout длинными объяснениями. Достаточно честного названия метода и проверенной суммы.
Проверка результата на корзине и оформлении заказа
Проверка результата - это не один взгляд на сумму. Для доставки важно пройти несколько состояний: пустой адрес, адрес внутри нужной зоны, адрес в другой зоне, изменение количества, смешанная корзина, бесплатная доставка, самовывоз и вариативный товар. Даже если магазин простой, такой набор тестов быстро показывает, где ставка работает как задумано, а где конфликтует с общей логикой WooCommerce.
Мини-матрица тестирования
| Сценарий | Что должно быть видно | Если результат неверный |
|---|---|---|
| Один товар с line cost | Доставка включает ставку один раз за строку | Проверьте, не заполнен ли item cost вместо line cost |
| Несколько единиц товара | Line cost не умножается, item cost умножается | Проверьте выбранное поле стоимости и количество в корзине |
| Адрес в точном postcode | Срабатывает самая точная строка выше общей | Переставьте строки и проверьте wildcard |
| Вариация с собственной ставкой | Ставка вариации заменяет ставку родителя | Откройте настройки конкретной вариации |
| Standalone method | Видна отдельная доставка с суммой продуктовых ставок | Проверьте, добавлен ли Per-Product в shipping zone |
Проверка block checkout и классического checkout
На странице продукта WooCommerce указывает совместимость расширения с Cart and checkout blocks. Всё равно стоит проверить именно тот тип checkout, который используется в вашем магазине. Если магазин недавно переходил с shortcode-based checkout на блоки, проверьте shipping options, обновление адреса и итоговые суммы. Если сторонняя тема или builder изменяет оформление checkout, временно сравните поведение с базовым WooCommerce checkout, чтобы отделить проблему интерфейса от проблемы расчёта.
Проверка заказов в админке
После тестового заказа откройте заказ в админ-панели и посмотрите shipping line. Она должна соответствовать тому методу и сумме, которую видел покупатель. Это важно для менеджеров, бухгалтерии и интеграций с fulfilment-процессами. Если в заказе сумма правильная, но на checkout она выглядит спорно, проблема может быть в тексте метода или пользовательском интерфейсе. Если сумма уже в заказе неверная, возвращайтесь к зонам, строкам ставок, variation override и кешу.
Безопасные улучшения и тонкая настройка
Для большинства магазинов достаточно настроек в админке. Код нужен только тогда, когда подтверждённая логика расширения не покрывает нужное поведение. Официальная документация приводит пример фильтра для ситуации, когда standalone Per Product Shipping должен всё же разрешить другой shipping method. Это не универсальный рецепт и не способ скрыть ошибку конфигурации. Используйте его только если вы действительно хотите оставить, например, Flat Rate вместе с standalone-методом.
Разрешить Flat Rate рядом со standalone-методом
Сниппет добавляет flat_rate в список методов, через которые разрешено shipping via при standalone-режиме. Вставляйте его через Code Snippets, child theme или маленький собственный plugin. Не правьте файлы WooCommerce, тему без child theme или сам Per Product Shipping.
add_filter( 'woocommerce_per_product_shipping_ship_via', function ( $ship_via ) {
$ship_via[] = 'flat_rate';
return $ship_via;
} );
После добавления кода проверьте checkout в зоне, где есть Per-Product и Flat Rate. Добавьте товар с per-product ставкой и убедитесь, что оба метода отображаются именно там, где это нужно. Затем отключите сниппет и повторите тест, чтобы зафиксировать поведение до и после. Если после включения кода покупатель видит слишком много вариантов доставки или выбирает более дешёвый метод, который не должен быть доступен для крупного товара, откатите изменение и решите задачу через отдельную зону, другой method title или условный shipping plugin.
Когда код лучше не добавлять
Не добавляйте сниппеты для пересчёта стоимости, если цель можно достичь настройками line cost, item cost, order handling fee или zone order. Любое вмешательство в shipping rates повышает риск конфликтов с кешем, блоковым checkout, платёжными плагинами и будущими обновлениями WooCommerce. Если логика требует выбирать максимальную ставку, исключать отдельные методы по классу, группировать товары по коробкам или учитывать реальные тарифы перевозчика, это уже не маленький безопасный snippet, а отдельная задача для плагина с условной логикой или индивидуальной разработки.
Частые проблемы и диагностика доставки по товару
Ошибки доставки почти всегда нужно диагностировать слоями: адрес и зона, метод в зоне, товар, ставка товара, вариация, корзина, кеш, затем сторонние плагины. Если начинать с кода или переустановки расширения, легко пропустить простую причину. Ниже - типовые симптомы именно для per-product логики и WooCommerce shipping.
Ставка не появляется в корзине
Симптом: товар добавлен в корзину, но доставка не меняется или метод вообще не отображается. Возможные причины: покупатель не попал в нужную shipping zone, в зоне нет активного метода, товар отмечен как virtual, per-product shipping не включён у товара, либо вы настроили standalone-режим, но не добавили метод Per-Product в зону.
Проверьте адрес покупателя, порядок зон, наличие shipping method и вкладку Shipping в карточке товара. Если товар вариативный, проверьте выбранную вариацию. Исправление начинайте с самого простого: один физический товар, одна зона, одна строка ставки. Если в такой чистой проверке ставка появляется, проблема была в смешанном сценарии, а не в установке.
Срабатывает не та строка ставки
Симптом: для конкретного индекса или региона применяется общая ставка. Причина часто в порядке строк. Per Product Shipping ищет подходящую строку сверху вниз, и широкое правило может перехватить адрес раньше точного правила. Ещё одна частая причина - неверный country code, state code или wildcard в postcode.
Переместите точные строки выше общих, сохраните товар и повторите тест с тем же адресом. Если используете wildcard, проверьте, действительно ли он соответствует формату индекса. Не смешивайте числовые диапазоны shipping zones и product-level wildcard без тестов, потому что ошибка может быть на уровне зоны, а не строки товара.
Стоимость умножается не так, как ожидалось
Симптом: при двух единицах товара доставка стала слишком высокой или, наоборот, не выросла. Проверьте, заполнены ли Line Cost и Item Cost. Line cost применяется к строке корзины, item cost - к каждой единице. Если вы поставили сумму в оба поля, итог будет включать обе части.
Исправление простое: оставьте только ту часть стоимости, которая соответствует логистике. Для одной коробки на строку используйте line cost. Для упаковки каждой единицы используйте item cost. После исправления проверьте количество 1, 2 и 3, чтобы увидеть закономерность.
У вариативного товара берётся неожиданная ставка
Симптом: родительский товар настроен правильно, но checkout показывает другую сумму для выбранного размера или цвета. Вероятная причина - у вариации включена собственная per-product ставка, которая переопределяет родительскую. Откройте вкладку Variations, разверните нужную вариацию и проверьте настройки доставки.
Если variation-level ставка не нужна, отключите её и оставьте правило на родителе. Если нужна, сделайте ставки явно разными и добавьте комментарий в вашу мастер-таблицу, чтобы будущий администратор понимал, почему одна вариация ведёт себя иначе.
Checkout показывает старую сумму
Симптом: после изменения ставки корзина всё равно показывает прежнюю доставку. Причина может быть в кеше браузера, серверном кеше, кеширующем плагине или в том, что корзина не обновилась после изменения адреса. WooCommerce shipping troubleshooting рекомендует исключать cart, checkout и my account из кеширования.
Очистите кеш, обновите корзину, смените адрес и повторите тест в приватном окне. Если проблема исчезла, настройте исключения. Если нет, включите shipping debug mode для проверки matched zone и временно отключите сторонние shipping plugins на тестовом окружении.
Standalone-метод скрывает другие варианты доставки
Симптом: после включения standalone покупатель больше не видит Flat Rate, Free Shipping или Local Pickup. Это не обязательно ошибка: в официальной логике standalone-метод по умолчанию не предлагает другие методы. Если такое поведение не подходит магазину, сначала оцените UX и бизнес-правила, затем используйте настройки ignore для free shipping/local pickup или официальный фильтр для разрешения конкретного метода.
Если после включения дополнительных методов покупатель может выбрать слишком дешёвый вариант для товара с дорогой логистикой, откатите изменение. В такой ситуации лучше использовать conditional shipping plugin, который умеет скрывать методы по продукту, классу или другим условиям.
FAQ по WooCommerce Per Product Shipping
Можно ли использовать плагин только для нескольких товаров?
Да, это один из самых естественных сценариев. Включайте per-product shipping только у товаров, которым нужна отдельная ставка. Остальной каталог может продолжать использовать обычные shipping methods WooCommerce.
Что выбрать: line cost или item cost?
Выбирайте line cost, если стоимость применяется один раз к строке корзины и не зависит от количества одинаковых единиц. Выбирайте item cost, если каждая единица товара добавляет отдельную стоимость доставки. Если заполнить оба поля, итог будет включать обе части.
Почему у вариации другая стоимость, чем у родительского товара?
Потому что ставки вариации переопределяют ставки товара. Откройте конкретную вариацию и проверьте, включён ли там per-variation shipping. Если отдельная логика не нужна, отключите её и храните ставку на уровне родительского товара.
Плагин заменяет shipping classes?
Нет. Shipping classes группируют товары и помогают методам доставки применять разные ставки к классам. Per Product Shipping хранит ставки у конкретного товара или вариации. В простом магазине они могут решать похожие задачи, но модель управления разная.
Можно ли импортировать ставки сразу для многих товаров?
Да, через CSV с колонками product id, country code, state code, postcode, line cost и item cost. Но сам импорт ставок не обязательно включает per-product shipping у товара. Для массового включения используйте стандартный продуктовый CSV-импорт WooCommerce и сначала проверьте процесс на одном товаре.
Почему покупатель не видит другие методы доставки при standalone-режиме?
Так работает standalone-логика: Per Product Shipping становится отдельным методом, а другие методы по умолчанию не предлагаются. Если нужно разрешить конкретный метод, например Flat Rate, используйте официальный фильтр и обязательно протестируйте смешанные корзины.
Влияет ли плагин на SEO?
Прямого SEO-эффекта у него нет. Но корректная, предсказуемая доставка влияет на поведение покупателя, отказ от checkout и доверие к магазину. Для SEO важнее, чтобы страницы cart и checkout не кешировались неправильно и не показывали устаревшие суммы.
Когда плагин может не подойти?
Он может быть слабым выбором для сложных правил по весу, габаритам, ролям пользователей, времени доставки, живым ставкам перевозчиков, нескольким складам или упаковке по коробкам. В таких случаях лучше рассматривать table rate, conditional shipping или специализированные shipping extensions.
Когда WooCommerce Per Product Shipping будет удачным выбором
WooCommerce Per Product Shipping стоит использовать, когда доставка действительно зависит от конкретного товара или вариации, а не от большой матрицы условий. Он особенно полезен для крупных, тяжёлых, хрупких, нестандартно упакованных или редких товаров, которые требуют своей ставки поверх обычной доставки или внутри отдельного shipping method. В такой задаче плагин даёт понятную точку управления: открыл товар, включил per-product shipping, задал строки, проверил checkout.
Перед запуском на рабочем магазине проверьте shipping zones, порядок строк, variation override, line cost против item cost, mixed cart, free shipping, local pickup и кеширование checkout. Если все тесты сходятся, можно переходить к блоку скачивания и загрузить архив с WooCommerce Per Product Shipping для дальнейшей установки или обновления на своём сайте. Если же настройка быстро превращается в десятки условий и исключений, не пытайтесь силой уложить всё в per-product таблицы - для такой логистики лучше выбрать более гибкий shipping plugin.
Главный критерий простой: после настройки администратор должен уметь объяснить расчёт доставки без доступа к коду. Если ответ звучит как "этот товар добавляет такую ставку для этой зоны, а checkout показывает итог после сопоставления адреса", Per Product Shipping используется по назначению. Если ответ требует длинной схемы с исключениями, ролями, классами, коробками и внешними тарифами, пора пересматривать архитектуру доставки.


