WooCommerce - торговля - Условные расчеты корзины на основе подкатегорий


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

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

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

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

Author: LoicTheAztec, 2016-12-06

1 answers

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

Код:

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 плагинов.


Связанный ответ: Скидка для определенной категории В зависимости от общего количества товаров

 1
Author: LoicTheAztec, 2017-05-23 10:30:41