2016-12-06 6 views
4

У меня есть очень конкретный проект, и мне нужно другое правило корзины. Я не мог найти плагин или какой-либо другой ресурс о том, как этого добиться.WooCommerce - Расчет условной корзины на основе подкатегорий

У меня есть подкатегория 1 (т. Е. Таблицы) и подкатегория 2 (то есть стулья). Пользователи могут только добавить 1 товар из подкатегории . Таблицы, что является обязательным и столько продуктов, сколько они хотят от Подкатегории Стулья, что необязательно.

мне нужно следующее правило: Если пользователи добавили продукты из подкатегорий Стулья затем вычесть стоимость из подкатегории Стулья изделия из подкатегории Таблицы продукта. Также в этом случае, если цена будет < 0, тогда установить цену до 0.

Кто-нибудь есть идеи, как я могу это сделать, используя стандартную Wordpress Woocommerce?

ответ

1

Это можно сделать эту работу, добавив скидку в корзине на основе ваших подкатегорий требований и расчетов ...

Код:

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

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

    // Initializing variables 
    $chairs_total = 0; 
    $table_total = 0; 
    $discount = 0; 

    // Iterating through each cart item 
    foreach($cart_object->get_cart() as $item_key => $item): 

     $item_line_total = $item["line_total"]; // Item total price (price x quantity) 

     // Chairs subcategory items 
     if(has_term('chairs', 'product_cat', $item['product_id'])) 
      $chairs_total += $item_line_total; 

     // Table subcategory items 
     if(has_term('table', 'product_cat', $item['product_id'])) 
      $table_total += $item_line_total; 

    endforeach; 

    // ## CALCULATIONS ## 
    if($table_total <= $chairs_total && $chairs_total > 0) 
     $discount -= $table_total; 
    elseif ($chairs_total > 0) 
     $discount -= $chairs_total; 

    // Adding the discount 
    if ($discount != 0) 
     $cart_object->add_fee(__('Chairs discount', 'woocommerce'), $discount, false); 
     // Note: Last argument in add_fee() method is related to applying the tax or not to the discount (true or false) 
} 

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


Связанные ответ: Discount for Certain Category Based on Total Number of Products

+0

спасибо отлично работает. [Большое объятие] :) –

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

  • Нет связанных вопросов^_^