Поскольку мы можем применять различные купоны к каждому продукту в заказе, существует ли какой-либо способ узнать, какой купон применяется к тому продукту? Я использовал функцию $order->get_used_coupons()
но только возвращает только использованные коды купонов.
Пожалуйста, помогите с решением. Благодарю.
Это основано на скомпилированном поиске по решению вашей проблемы, но я не уверен в этом (непроверенном) фрагменте кода:
function wc_my_order_coupons( $order_id ) { $order = new WC_Order( $order_id ); // checking if order has some used coupons if( $order->get_used_coupons() ) { $order_coupons = $order->get_used_coupons(); /* echo var_dump($order_coupons); */ foreach( $order->$order_coupons as $coupon) { $coupon_id = $coupon->id; /* echo var_dump($coupon_id); */ // here is a list of most all data that you can use for a coupon $cp_discount_type = get_post_meta( $coupon_id, 'discount_type', true ); $cp_amount = get_post_meta( $coupon_id, 'coupon_amount', true ); $cp_indiv_use = get_post_meta( $coupon_id, 'individual_use', true ); $cp_products = get_post_meta( $coupon_id, 'product_ids' ); $cp_excl_products = get_post_meta( $coupon_id, 'exclude_product_ids' ); $cp_usage_limit = get_post_meta( $coupon_id, 'usage_limit', true ); $cp_expiry_date = get_post_meta( $coupon_id, 'expiry_date', true ); $cp_apply_before_tax = get_post_meta( $coupon_id, 'apply_before_tax', true ); $cp_free_shipping = get_post_meta( $coupon_id, 'free_shipping', true ); // Getting the products in this order_id $items = $order->get_items(); foreach ($items as $key => $item) { $product_name = $item['name']; $product_id = $item['product_id']; /* echo var_dump($product_id); */ // Example: we use product_ids authorized in the coupon $cp_products if (in_array($product_id, $cp_products)) { echo $product_name . 'uses the coupon: ' . $coupon->code . '<br>'; } } } } }
Дайте мне некоторую обратную связь … и я настрою этот код, потому что есть несколько способов сделать это.
Рекомендации :