Как создать сложный класс доставки в Woocommerce?

Вопрос или проблема

Используя WooCommerce, мне нужен класс доставки, который будет взимать $30 за 1-3 товара и затем увеличивать плату на $30 за каждые дополнительные 1-3 товара.

Как это сделать?

Ответ или решение

Создание сложного класса доставки в WooCommerce, который расчитывает стоимость доставки в зависимости от количества товаров в заказе, можно реализовать с использованием пользовательских функций и правил. В данном случае ваша задача — составить систему, которая будет взимать плату в размере 30 долларов за 1-3 товара и увеличивать эту плату на 30 долларов за каждые дополнительные 1-3 товара. Давайте рассмотрим, как можно это реализовать.

Теория

WooCommerce — это мощная платформа для электронной коммерции на основе WordPress, которая позволяет настраивать различные аспекты интернет-магазина, включая доставки. Для реализации сложной системы вычислений стоит понимать основные принципы работы классов доставки.

Класс доставки в WooCommerce — это группа товаров, для которой применяются одинаковые условия доставки. По умолчанию WooCommerce позволяет настраивать простые правила для классов, но с помощью дополнительных инструментов, таких как использование фильтров и хуков в functions.php, можно значительно расширить функционал.

Пример

Рассмотрим на примере, как создать кастомное правило доставки. Основное правило, которое необходимо реализовать, заключается в следующем:

  • Плата за 1-3 товара составляет $30.
  • За каждые дополнительные 1-3 товара плата увеличивается на $30.

Применение

Шаг 1: Создайте класс доставки в WooCommerce

  1. Перейдите в административную панель WordPress.
  2. Перейдите в WooCommerce > Настройки > Доставка > Классы доставки.
  3. Добавьте новый класс доставки. Назовите его, например, «Large items» или «Complex shipping».

Шаг 2: Присвойте класс доставки вашим товарам

  1. Перейдите к редактированию продукта, который должен использовать этот класс доставки.
  2. В разделе "Доставка" выберите созданный вами класс доставки.

Шаг 3: Настройте пользовательские правила в functions.php

Теперь необходимо добавить код, который будет рассчитывать стоимость доставки на основе количества товаров:

function calculate_custom_shipping_rate( $rates, $package ) {
    $item_count = 0;

    // Проверяем наличие товаров, относящихся к нашему классу доставки.
    foreach ( $package['contents'] as $key => $item ) {
        if ( $item['data']->get_shipping_class() === 'complex-shipping' ) { // Убедитесь, что идентификатор класса доставки соответствует вашему.
            $item_count += $item['quantity'];
        }
    }

    // Расчитываем стоимость доставки на основе количества товаров.
    if ($item_count > 0) {
        $sets_of_three = ceil($item_count / 3); // Округляем в большую сторону каждую группу из 1-3 товаров
        $custom_rate = $sets_of_three * 30; // Умножаем количество групп на $30

        foreach ( $rates as $rate_key => $rate ) {
            if ( 'flat_rate' === $rate->method_id ) {
                $rates[$rate_key]->cost = $custom_rate; // Устанавливаем рассчитанную стоимость для метода доставки.
            }
        }
    }

    return $rates;
}

add_filter( 'woocommerce_package_rates', 'calculate_custom_shipping_rate', 10, 2 );
Объяснение кода:
  1. Оставляем переменную item_count: Мы считаем, сколько товаров относится к классу доставки "complex-shipping".

  2. Цикл проверки: Проверяем каждый элемент в корзине покупателя для определения, относится ли он к нужному классу доставки.

  3. Расчет стоимости: Используем функцию ceil(), чтобы получить количество групп из трёх товаров и умножаем это количество на 30 для получения итоговой суммы доставки.

  4. Применение стоимости: В существующем методе доставки (flat_rate в примере) устанавливаем специфически рассчитанную плату.

Шаг 4: Тестирование и окончательные настройки

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

Заключение

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

Эта методика требует знаний языка PHP и понимания работы WordPress и WooCommerce, поэтому, если у вас нет уверенности в своих навыках, стоит обратиться к профессиональному разработчику.

Оцените материал
Добавить комментарий

Капча загружается...