Могу ли я изменить заказ Купоны WooCommerce применяются программно? - PullRequest
1 голос
/ 09 марта 2020

Я занимаюсь разработкой магазина Woocommerce и хочу предложить всем членам (пользователям, вошедшим в систему) скидку 20% на их итоговую сумму.

Я создал купон под названием «Twinspercent_off», и я программно применяю его с помощью пользовательского функция и хук в моих функциях. php. Это хорошо работает.

В настройках W C я установил флажок «Рассчитать купонные скидки последовательно», и это работает почти так, как я ожидал. Тем не менее, я хотел бы, чтобы мой «fiftypercent_off» всегда применялся последним в случаях, когда есть несколько купонов.

Независимо от того, что я пытался сделать (l oop через все купоны в текущем порядке, удалите все купоны, добавьте их обратно в нужном мне порядке) Я считаю, что Woo-commerce, кажется, всегда применяет их в порядке экономии денежных средств.

Например, если клиент заказывает продукты на сумму 100 долларов, и у них есть купон на 25 долларов, а также квалифицированный для получения 20% от общей суммы.

Я бы хотел рассчитать общую сумму как (100 -25) * 0,8 = 60

, но W C рассчитывается как такие (100 * 0,8) - 25 = $ 55

Я попробовал следующее, но без разницы:

if ( is_user_logged_in() ) {
        $Coupon_code = 'twentypercent_off'; 
        $Current_Coupons = WC()->cart->get_coupons();
        $Non_Prog_Coupons=array();
        // loop through all current coupons
        foreach( $Current_Coupons as $code => $coupon ){
            if($code==$coupon_code){
                WC()->cart->remove_coupon( $code );
            } else {
                WC()->cart->remove_coupon( $code );
                $Non_Prog_Coupons[]=$code;  // array of non-programmatically added coupons
            }
        }
        // loop through non-programmatically added coupons
        foreach( $Non_Prog_Coupons as $x => $code ){
            WC()->cart->add_discount( $code );  // add them again 
        }
        // add programmatically added coupon last !
        WC()->cart->add_discount($Coupon_code);
    }
    return;

Единственное возможное решение, с которым я столкнулся, это применить скидку 20%. в качестве отрицательной платы, которая не подходит для наших целей и была бы абсолютным последним средством

Любые идеи о том, как этого добиться, будут высоко оценены

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