Я пытаюсь создать очень конкретный тип кода купона c.
Если клиент вводит «allthings30», он получает скидку 30%.
Однако, если заказ превышает 75 фунтов стерлингов, они также получают бесплатную доставку.
Теперь на веб-сайте уже есть бесплатная доставка, но я хочу, чтобы они были отключены если заказ меньше 75 £, только при применении этого кода .
Используя другие вопросы по stackoverflow, мне удалось создать код, но он применяется к каждой отдельной паре.
Как мне применить этот код только к купону «allthings30». Любая помощь приветствуется.
add_filter( 'woocommerce_package_rates', 'coupons_removes_free_shipping', 33, 38 );
function coupons_removes_free_shipping( $rates, $package ){
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return $rates;
$min_subtotal = 75; // Minimal subtotal allowing free shipping
$coupon_code = 'allthings30'; // The required coupon code
// Get needed cart subtotals
$subtotal_excl_tax = WC()->cart->get_subtotal();
$subtotal_incl_tax = $subtotal_excl_tax + WC()->cart->get_subtotal_tax();
$discount_excl_tax = WC()->cart->get_discount_total();
$discount_incl_tax = $discount_total + WC()->cart->get_discount_tax();
// Calculating the discounted subtotal including taxes
$discounted_subtotal_incl_taxes = $subtotal_incl_tax - $discount_incl_tax;
$applied_coupons = in_array( strtolower($coupon_code), WC()->cart->get_applied_coupons() );
if( sizeof($applied_coupons) > 0 && $discounted_subtotal_incl_taxes < $min_subtotal ){
foreach ( $rates as $rate_key => $rate ){
// Targeting "Free shipping"
if( 'free_shipping' === $rate->method_id ){
unset($rates[$rate_key]);
}
}
}
return $rates;
}