Добавить плату в Woocommerce Shipping Class без использования зон или фиксированной ставки - PullRequest
0 голосов
/ 22 февраля 2019

У меня много проблем с поиском того, что мне нужно, поэтому я обращаюсь к гуру!

Я использую Woocommerce и плагин Table Rate Shipping Plus (от mangohour) длянаш простой некоммерческий книжный магазин комиксов.В Швеции в качестве стандарта мы используем весовую доставку, поэтому система фиксированных тарифов не подходит для нашего магазина.

Я создал «громоздкий» класс доставки, и он мне понадобится при выборе продуктов вэтот класс автоматически добавляет небольшую плату в корзину (только один раз, без суммирования) без использования зон доставки woocommerce и единой системы тарифов.

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

* 1008Может ли кто-нибудь указать мне правильное направление?Я слепо смотрел на себя ...

1 Ответ

0 голосов
/ 23 февраля 2019

Если бы я дал вам этот код для добавления в functions.php, вы бы поняли, как его настроить?Или я должен превратить его в простой плагин для вас?

Вот визуальный пример того, как он работает в моей локальной среде тестирования WP.

Imgur


Установка в functions.php

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


Инструкции по использованию.

Шаг 1. Создайте свои классы доставки в Настройки WooComerce> Доставка> Классы доставки.Например, на своем тестовом сайте я создал «громоздкие» и «легкие» классы доставки в настройках wooComerce.Запомните слаг, который вы установили для шага 2.

Шаг 2. На EX1 я помещаю чувствительный к регистру слаг класса доставки WooCommerce, заключенный в ''.На EX2 я размещаю описание комиссии, которую вы хотели бы видеть при оформлении заказа, внутри ''.В Finnaly на EX3 вы просто помещаете числовое значение для платы, это не идет в пределах ''.

//Example:
$shippingClasses['EX1'] = ['description' => 'EX2', 'fee' => EX3];

//How it will look:
$shippingClasses['bulky'] = ['description' => 'Bulky Fee', 'fee' => 7];
$shippingClasses['light'] = ['description' => 'Light Fee', 'fee' => 4];

И это все!Вот и все, что вам нужно сделать.


Код

function fees_fees_fees() {

    $shippingClasses['bulky'] = ['description' => 'Bulky Fee', 'fee' => 5];
    $shippingClasses['light'] = ['description' => 'Light Fee', 'fee' => 7];

    foreach ( WC()->cart->get_cart() as $cart_item_key => $values ) {
    $shipping_class = get_the_terms( $values['product_id'], 'product_shipping_class' );

        foreach($shippingClasses as $key => $val) {
        if ( isset( $shipping_class[0]->slug ) && in_array( $shipping_class[0]->slug, [$key] ) ) {
              WC()->cart->add_fee( __($val['description'], 'woocommerce'), $val['fee'] ); }
        }
    }
}
add_action( 'woocommerce_cart_calculate_fees', 'fees_fees_fees' );
...