kinnightt
@kinnightt
Motion-дизайнер/Монтажёр/Видеограф/Фотограф

Как на странице заказа WooCommerce применить скидку к определённым категориям товаров в зависимости от формата доставки?

Дело в том, что заказчик просит сделать скидку в 50% при "Самовывозе" - это я уже сделал (нашел тут на Хабре код, который применяет скидку на все товары), но есть ещё одно условие - эта скидка не должна применятся на две категории товара.
5fb12b6394b95608417983.png
Я попробовал проходиться по каждому товару в списке заказов, и проверять принадлежит ли тот к определённой категории или нет через различные операторы (is_category, in_category, has_term), но никак не срабатывало. Что я делаю не так?
(id = 37 - это id категории Премиум роллов)
add_action( 'woocommerce_before_calculate_totals', 'custom_cart_item_price', 10, 1 );
function custom_cart_item_price( $cart ) {
    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;

    if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 )
        return;
    
    $category_id = 37; // premium-rolls id
    $cats = hml_get_category_gender_line( $category_id );
    
    foreach ( $cart->get_cart() as $cart_item ){
        if (!has_term($cats, 'product_cat', $value['product_id'] )){
            $price = $cart_item['data']->get_price(); // Get the product price
            $new_price = $price-$price*50/100; // the calculation
            $cart_item['data']->set_price( $new_price ); // Set the new price
        }
        
    }
}
function hml_get_category_gender_line( $cat_parent ){
  // get_term_children() accepts integer ID only
  $line = get_term_children( (int) $cat_parent, 'product_cat');
  $line[] = $cat_parent;
  return $line;
}
  • Вопрос задан
  • 471 просмотр
Пригласить эксперта
Ответы на вопрос 2
в цикле который применяет скидку сделайте проверку на принадлежность категории через has_term и исключите этот товар из применения скидки.
Ответ написан
KARENKING
@KARENKING
Напиши мне помогу
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы