创建订单时触发功能以从父订阅中删除优惠券
Fire function on order creation to remove coupons from parent subscription
我有以下功能,我希望它在每次创建订阅订单时触发。
然后我希望它从父订阅中删除商店信用优惠券(因为续订订单将包含优惠券)。
我遇到错误:
"PHP message: PHP Fatal error: Uncaught Error: Call to undefined method WC_Order_Item_Coupon::get_discount_type()".
我哪里错了?
是否以正确的方式传递父订阅项?
function remove_store_credit($subscription) {
$coupons = $subscription->get_items( 'coupon' );
foreach ( $coupons as $coupon ) {
if($coupon->get_discount_type() == "smart_coupon"){
$subscription->remove_coupon( $coupon->get_code() );
}
}
}
add_action('woocommerce_subscription_payment_complete','remove_store_credit',10,1);
方法 get_discount_type()
属于 WC_Coupon
Class 但不属于 WC_Order_Item_Coupon
Class.
所以尝试在foreach循环的优惠券项目中获取WC_Coupon
的实例对象。
function remove_store_credit( $subscription ) {
// Loop through order coupon items
foreach ( $subscription->get_items( 'coupon' ) as $item ) {
$coupon = new WC_Coupon( $item->get_code() ); // get an instance of the WC_Coupon Object
if( $coupon->get_discount_type() == "smart_coupon" ){
$subscription->remove_coupon( $item->get_code() );
}
}
}
add_action('woocommerce_subscription_payment_complete', 'remove_store_credit', 10, 1);
应该可以解决这个错误。
我有以下功能,我希望它在每次创建订阅订单时触发。
然后我希望它从父订阅中删除商店信用优惠券(因为续订订单将包含优惠券)。
我遇到错误:
"PHP message: PHP Fatal error: Uncaught Error: Call to undefined method WC_Order_Item_Coupon::get_discount_type()".
我哪里错了?
是否以正确的方式传递父订阅项?
function remove_store_credit($subscription) {
$coupons = $subscription->get_items( 'coupon' );
foreach ( $coupons as $coupon ) {
if($coupon->get_discount_type() == "smart_coupon"){
$subscription->remove_coupon( $coupon->get_code() );
}
}
}
add_action('woocommerce_subscription_payment_complete','remove_store_credit',10,1);
方法 get_discount_type()
属于 WC_Coupon
Class 但不属于 WC_Order_Item_Coupon
Class.
所以尝试在foreach循环的优惠券项目中获取WC_Coupon
的实例对象。
function remove_store_credit( $subscription ) {
// Loop through order coupon items
foreach ( $subscription->get_items( 'coupon' ) as $item ) {
$coupon = new WC_Coupon( $item->get_code() ); // get an instance of the WC_Coupon Object
if( $coupon->get_discount_type() == "smart_coupon" ){
$subscription->remove_coupon( $item->get_code() );
}
}
}
add_action('woocommerce_subscription_payment_complete', 'remove_store_credit', 10, 1);
应该可以解决这个错误。