根据 WooCommerce 中的客户送货区域应用特定优惠券
Apply specific coupon based on customer shipping zone in WooCommerce
我有两张优惠券和多个送货区域
- (A区发货,B区发货,C区发货)
- (优惠券 1)和(优惠券 2)。
我想要的是,如果用户选择特定的送货区,可以说(送货区 C)
我想专门为(送货区C)申请(优惠券2)。
并且(优惠券 1)将适用于所有其他运输区域。
这是我到目前为止尝试过的方法
<?php
add_action('woocommerce_before_cart', 'add_coupon_notice');
add_action('woocommerce_before_checkout_form', 'add_coupon_notice');
function add_coupon_notice()
{
if (is_cart() || is_checkout())
{
global $woocommerce;
$cart_total = WC()
->cart->total;
$minimum_amount = 100;
$currency_code = get_woocommerce_currency();
$states = array(
'shipping zone A',
'shipping zone B',
'shipping zone C'
);
wc_clear_notices();
if ($cart_total < $minimum_amount && in_array(WC()
->customer
->get_shipping_state() , $states))
{
WC()
->cart
->apply_coupon('COUPON 1');
wc_print_notice('You just got 15% off your order!', 'notice');
}
else
{
WC()
->cart
->apply_coupon('COUPON 2');
wc_print_notice('You just got 15% off your order!', 'notice');
}
wc_clear_notices();
}
}
我设法用下面的代码解决了它。
add_action( 'woocommerce_cart_calculate_fees','woocommerce_custom_surcharge' );
function woocommerce_custom_surcharge() {
global $woocommerce;
$state = $woocommerce->customer->get_shipping_state();
if ( $state == 'shipping zone 1' ) {
WC()->cart->apply_coupon( 'COUPON 2' );
WC()->cart->remove_coupon( 'COUPON 1' );
} else {
WC()->cart->apply_coupon( 'COUPON 1' );
WC()->cart->remove_coupon( 'COUPON 2' );
}
}
我有两张优惠券和多个送货区域
- (A区发货,B区发货,C区发货)
- (优惠券 1)和(优惠券 2)。 我想要的是,如果用户选择特定的送货区,可以说(送货区 C) 我想专门为(送货区C)申请(优惠券2)。 并且(优惠券 1)将适用于所有其他运输区域。
这是我到目前为止尝试过的方法
<?php
add_action('woocommerce_before_cart', 'add_coupon_notice');
add_action('woocommerce_before_checkout_form', 'add_coupon_notice');
function add_coupon_notice()
{
if (is_cart() || is_checkout())
{
global $woocommerce;
$cart_total = WC()
->cart->total;
$minimum_amount = 100;
$currency_code = get_woocommerce_currency();
$states = array(
'shipping zone A',
'shipping zone B',
'shipping zone C'
);
wc_clear_notices();
if ($cart_total < $minimum_amount && in_array(WC()
->customer
->get_shipping_state() , $states))
{
WC()
->cart
->apply_coupon('COUPON 1');
wc_print_notice('You just got 15% off your order!', 'notice');
}
else
{
WC()
->cart
->apply_coupon('COUPON 2');
wc_print_notice('You just got 15% off your order!', 'notice');
}
wc_clear_notices();
}
}
我设法用下面的代码解决了它。
add_action( 'woocommerce_cart_calculate_fees','woocommerce_custom_surcharge' );
function woocommerce_custom_surcharge() {
global $woocommerce;
$state = $woocommerce->customer->get_shipping_state();
if ( $state == 'shipping zone 1' ) {
WC()->cart->apply_coupon( 'COUPON 2' );
WC()->cart->remove_coupon( 'COUPON 1' );
} else {
WC()->cart->apply_coupon( 'COUPON 1' );
WC()->cart->remove_coupon( 'COUPON 2' );
}
}