将优惠券添加到现有的 WooCommerce 订阅
Add Coupon to Pre Existing WooCommerce Subscription
我已经启动了一个推荐计划,该计划为用户提供 25 英镑的优惠券代码,效果很好,但不适用于现有订阅者。我如何才能加入续订并应用自动优惠券,以便订阅者也可以从折扣中受益。 ?
我可以用 woocommerce_new_order
实现吗?
编辑:
更新 POST 以帮助我最后使用的其他代码,以利用下面的优惠券利用现有订阅者:
// discount subscription renewals
function discount_subscription_renewals($billing_email){
$query_args = array(
'posts_per_page' => -1,
'post_type' => 'shop_coupon',
'post_status' => 'publish',
'orderby' => array( 'title' => 'ASC' ),
'meta_query' => array(
array(
'key' => 'discount_type',
'value' => 'fixed_cart',
),
),
);
$coupons = get_posts( $query_args );
$coupon_code = false;
$discount = 0;
foreach ( $coupons as $coupon ) {
$customer_email = array($coupon->customer_email[0]);
$amount = $coupon->coupon_amount;
$usage_count = $coupon->usage_count;
$usage_limit = $coupon->usage_limit;
if (in_array($billing_email,$customer_email) && ($usage_count < $usage_limit)){
$coupon_code = $coupon->post_title;
break;
//$discount += $amount;
}
}
return $coupon_code;
}
function apply_discount_on_renewal_order_created( $renewal_order, $subscription ) {
$order = new WC_Order($renewal_order->get_id() );
$billing_email = $order->get_billing_email();
$coupon_code = discount_subscription_renewals($billing_email);
if ($coupon_code){
$order->apply_coupon($coupon_code);
//$order->set_total( $order->get_total() - $coupon_amount );
}
return $order;
}
add_filter( 'wcs_renewal_order_created', 'apply_discount_on_renewal_order_created', 10, 2 );
function apply_discount_on_renewal_order_created( $renewal_order, $subscription ) {
$order = new WC_Order( $renewal_order->get_id() );
$coupon_amount = 25;
$order->set_total( $order->get_total() - $coupon_amount );
return $order;
}
add_filter( 'wcs_renewal_order_created', 'apply_discount_on_renewal_order_created', 10, 2 );
我已经启动了一个推荐计划,该计划为用户提供 25 英镑的优惠券代码,效果很好,但不适用于现有订阅者。我如何才能加入续订并应用自动优惠券,以便订阅者也可以从折扣中受益。 ?
我可以用 woocommerce_new_order
实现吗?
编辑:
更新 POST 以帮助我最后使用的其他代码,以利用下面的优惠券利用现有订阅者:
// discount subscription renewals
function discount_subscription_renewals($billing_email){
$query_args = array(
'posts_per_page' => -1,
'post_type' => 'shop_coupon',
'post_status' => 'publish',
'orderby' => array( 'title' => 'ASC' ),
'meta_query' => array(
array(
'key' => 'discount_type',
'value' => 'fixed_cart',
),
),
);
$coupons = get_posts( $query_args );
$coupon_code = false;
$discount = 0;
foreach ( $coupons as $coupon ) {
$customer_email = array($coupon->customer_email[0]);
$amount = $coupon->coupon_amount;
$usage_count = $coupon->usage_count;
$usage_limit = $coupon->usage_limit;
if (in_array($billing_email,$customer_email) && ($usage_count < $usage_limit)){
$coupon_code = $coupon->post_title;
break;
//$discount += $amount;
}
}
return $coupon_code;
}
function apply_discount_on_renewal_order_created( $renewal_order, $subscription ) {
$order = new WC_Order($renewal_order->get_id() );
$billing_email = $order->get_billing_email();
$coupon_code = discount_subscription_renewals($billing_email);
if ($coupon_code){
$order->apply_coupon($coupon_code);
//$order->set_total( $order->get_total() - $coupon_amount );
}
return $order;
}
add_filter( 'wcs_renewal_order_created', 'apply_discount_on_renewal_order_created', 10, 2 );
function apply_discount_on_renewal_order_created( $renewal_order, $subscription ) {
$order = new WC_Order( $renewal_order->get_id() );
$coupon_amount = 25;
$order->set_total( $order->get_total() - $coupon_amount );
return $order;
}
add_filter( 'wcs_renewal_order_created', 'apply_discount_on_renewal_order_created', 10, 2 );