2017-01-14 2 views
1

Я в уникальной ситуации с моим сайтом Woocommerce.Таможенный платеж, основанный на размере и категориях продуктов

Мне нужно добавить плату за упаковку, которая будет несколько похожа на плату за обработку.

К сожалению, это не так просто, как добавление комиссии за обработку в размере 5,00 долларов США за каждый заказ.

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

Я провел много исследований, и я не могу найти плагин для обработки этой ситуации.

Чтобы добавить к сложности, есть целая таблица, которая должна быть создана. Например, если предметы из одной категории имеют общую площадь в диапазоне от 1 до 10, тогда плата за упаковку будет $ 10. Если общая сумма sq ftg находится между 11-20, тогда это будет $ 20.

Как я могу это сделать?

Благодаря

+1

Пожалуйста, ознакомьтесь с https://stackoverflow.com/help/on-topic. Этот вопрос, как указано, не подходит для формата Q & A stackoverflow. –

+0

Это похоже на то, что вы можете нанять разработчика, чтобы создать для вас. – helgatheviking

ответ

1

Обновлено: Добавлена ​​WooCommerce 3+ совместимость

Это возможно и легко с методом add_fee() в woocommerce_cart_calculate_fees крючок. Вот простой пример использования простых продуктов с 2 категориями и на основе измерений измерения размеров продукта для каждого элемента тележки. Это также возможно для других типов продуктов.

Вот пример кода (что вам нужно будет настроить для вашего собственного дела):

add_action('woocommerce_cart_calculate_fees','custom_applied_fee', 10, 1); 
function custom_applied_fee($cart_object) { 

    if (is_admin() && ! defined('DOING_AJAX')) 
     return; 

    // Set HERE your categories (can be an ID, a slug or the name… or an array of this) 
    $category1 = 'plain'; 
    $category2 = 'plywood'; 

    // variables initialisation 
    $fee = 0; 
    $coef = 1; 

    // Iterating through each cart item 
    foreach($cart_object->get_cart() as $cart_item){ 
     $product_id = version_compare(WC_VERSION, '3.0', '<') ? $cart_item['data']->id : $cart_item['data']->get_id(); 
     $product = $cart_item['data']; // Get the product object 

     // Get the dimentions of the product 
     $height = $product->get_height(); 
     $width = $product->get_width(); 
     // $length = $product->get_length(); 

     // Initialising variables (in the loop) 
     $cat1 = false; $cat2 = false; 

     // Detecting the product category and defining the category coeficient to change price (for example) 
     // Set here for each category the modification calculation rules… 
     if(has_term($category1, 'product_cat', $cart_item['product_id'])) 
      $coef = 1.15; 
     if(has_term($category2, 'product_cat', $cart_item['product_id'])) 
      $coef = 1.3; 

     // ## CALCULATIONS ## (Make here your conditional calculations) 
     $dimention = $height * $with; 
     if($dimention <= 10){ 
      $fee += 10 * $coef; 
     } elseif($dimention > 10 && $dimention <= 20){ 
      $fee += 20 * $coef; 
     } elseif($dimention > 20){ 
      $fee += 30 * $coef; 
     } 
    } 

    // Set here the displayed fee text 
    $fee_text = __('Packaging fee', 'woocommerce'); 

    // Adding the fee 
    if ($fee > 0) 
     WC()->cart->add_fee($fee_text, $fee, false); 
     // Note: Last argument in add_fee() method is related to applying the tax or not to the discount (true or false) 

} 

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

Код находится в файле functions.php вашей активной дочерней темы (или темы). Или также в любых плагинах php-файлов.

Код проверен и полностью работоспособен.

Похожие ответы:

Смежные вопросы