Обновление 3
Начиная с WooCommerce 3.7, теперь вы должны использовать метод WC_Abstract
_ 2_ в объекте экземпляра WC_Order
, чтобы получить использованные купоны из заказа, поскольку метод get_used_coupons()
устарел.
Итак, вы замените в коде:
foreach( $order->get_used_coupons() as $coupon_code ){
by:
foreach( $order->get_coupon_codes() as $coupon_code ){
Затем вы можете получить подробную информацию о купоне, например:
foreach( $order->get_coupon_codes() as $coupon_code ) {
// Get the WC_Coupon object
$coupon = new WC_Coupon($coupon_code);
$discount_type = $coupon->get_discount_type(); // Get coupon discount type
$coupon_amount = $coupon->get_amount(); // Get coupon amount
}
Обновление 2
Во-первых, вы больше не можете получить доступ к свойствам объектов WC, начиная с WooCommerce 3.
Теперь вам следует использовать WC_Coupon
методы получения, чтобы получить сведения о купоне < / strong> из экземпляра WC_Coupon
Object…
В вашем случае вам необходимо использовать get_discount_type()
a> или метод is_type( 'cash_back_fixed' )
…
Вот как это сделать:
// Get an instance of WC_Order object
$order = wc_get_order( $order_id );
// Coupons used in the order LOOP (as they can be multiple)
foreach( $order->get_used_coupons() as $coupon_code ){
// Retrieving the coupon ID
$coupon_post_obj = get_page_by_title($coupon_code, OBJECT, 'shop_coupon');
$coupon_id = $coupon_post_obj->ID;
// Get an instance of WC_Coupon object in an array(necessary to use WC_Coupon methods)
$coupon = new WC_Coupon($coupon_id);
// Now you can get type in your condition
if ( $coupon->get_discount_type() == 'cash_back_percentage' ){
// Get the coupon object amount
$coupon_amount1 = $coupon->get_amount();
}
// Or use this other conditional method for coupon type
if( $coupon->is_type( 'cash_back_fixed' ) ){
// Get the coupon object amount
$coupon_amount2 = $coupon->get_amount();
}
}
Чтобы получить размер скидки по купонам (а также использовать методы типов купонов), вот способ:
$order = wc_get_order( $order_id );
// GET THE ORDER COUPON ITEMS
$order_items = $order->get_items('coupon');
// print_r($order_items); // For testing
// LOOP THROUGH ORDER COUPON ITEMS
foreach( $order_items as $item_id => $item ){
// Retrieving the coupon ID reference
$coupon_post_obj = get_page_by_title( $item->get_name(), OBJECT, 'shop_coupon' );
$coupon_id = $coupon_post_obj->ID;
// Get an instance of WC_Coupon object (necessary to use WC_Coupon methods)
$coupon = new WC_Coupon($coupon_id);
## Filtering with your coupon custom types
if( $coupon->is_type( 'cash_back_fixed' ) || $coupon->is_type( 'cash_back_percentage' ) ){
// Get the Coupon discount amounts in the order
$order_discount_amount = wc_get_order_item_meta( $item_id, 'discount_amount', true );
$order_discount_tax_amount = wc_get_order_item_meta( $item_id, 'discount_amount_tax', true );
## Or get the coupon amount object
$coupons_amount = $coupons->get_amount();
}
}
Итак, чтобы получить цену купона, мы используем метод WC_Coupon
get_amount()
.
person
LoicTheAztec
schedule
08.07.2017