Я пытаюсь сделать так, чтобы, если бы клиент добавил код купона (Любой из них), опция Бесплатная доставка исчезла бы, и была бы применена фиксированная ставка.- Вы могли бы подумать, что это будет легко реализовать, было бы сотни плагинов и способов, описанных для этого, но я не нашел ни одного.Я не хочу платить 89 долларов за плагин, который выполняет эту единственную вещь
Дополнительный бонус будет, если они используют купон, но тратят более $ 249, они все еще могут претендовать на бесплатную доставку.Я читал кое-где, как это сделать, но он требует, чтобы я получил POST ID, который с последней версией WooCommerce невозможен, как это было раньше, я не знаю идентификатор доставки, поэтому я потерян Вот код
add_filter( 'woocommerce_shipping_packages', function( $packages ) {
$applied_coupons = WC()->session->get( 'applied_coupons', array() );
if ( ! empty( $applied_coupons ) ) {
$free_shipping_id = 'free_shipping:2';
unset($packages[0]['rates'][ $free_shipping_id ]);
}
return $packages;
} );
Спасибо
Отредактировано
add_filter( 'woocommerce_package_rates', 'coupons_removes_free_shipping',
10, 2 );
function coupons_removes_free_shipping( $rates, $package ){
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return $rates;
$min_total = 250; // Minimal subtotal allowing free shipping
// Get needed cart totals
$total_excl_tax = WC()->cart->get_total();
$discount_excl_tax = WC()->cart->get_discount_total();
// Calculating the discounted subtotal including taxes
$discounted_subtotal_incl_taxes = $total_excl_tax - $discount_excl_tax;
$applied_coupons = WC()->cart->get_applied_coupons();
if( sizeof($applied_coupons) > 0 && $discounted_subtotal_incl_taxes < $min_total ) {
foreach ( $rates as $rate_key => $rate ){
// Targeting "Free shipping"
if( 'free_shipping' === $rate->method_id ){
unset($rates[$rate_key]);
}
}
}
return $rates;
}