2016-12-23 5 views
0

스마트 쿠폰에 대한 비즈니스 확장 (pdf 인쇄)을 작성 중입니다.WooCommerce 스마트 쿠폰은 어떤 아이템에서 생성 되었습니까?

이제 생성 된 쿠폰 (주문서)과 주문 항목과의 관계가 필요합니다.

예를 들어, 어떤 주문 항목이 쿠폰을 생성 했습니까? 쿠폰에서 item_id 주문을받을 수있는 방법이 있습니까?

은 쿠폰을 얻기 위해이 코드를 사용하는 것입니다 :

$coupons = get_post_meta($order_id, 'sc_coupon_receiver_details', true));

매우 감사를

답변

0

나는 해결책을 발견했다,하지만 난 woocommerce - 스마트 쿠폰 "내부 코드를 삽입했다 .php "파일.

라인 379 : 필터 변수를

add_filter('generate_smart_coupon_action', array( $this, 'generate_smart_coupon_action'), 1, 10); 

라인 4783을 확장하십시오 $ ITEM_ID

if($this->is_coupon_amount_pick_from_product_price(array($coupon_title))) { 
              $email_to_credit[$receivers_emails[$coupon->id][0]][] = $coupon->id . ':' . $sc_called_credit_details[$item_id] . ':' . $item_id; 
             } else { 
              $email_to_credit[$receivers_emails[$coupon->id][0]][] = $coupon->id . ':' . $coupon->amount . ':' . $item_id; 
             } 

라인 4816에 변수를 확장 : 세부에서 $의 ITEM_ID를 확인하고 그것을 참조 "generate_smart_coupon"메소드

foreach ($email_to_credit[$email_id] as $coupon_credit => $qty) { 
         $coupon_details = explode(':', $coupon_credit); 
         $coupon_title = get_the_title($coupon_details[0]); 
         $coupon = new WC_Coupon($coupon_title); 
         $credit_amount = $coupon_details[1]; 
         $item_id = $coupon_details[2]; 
         $message_index = array_search($email_id, $email[$coupon->id], true); 
         if ($message_index !== false && isset($receivers_messages[$coupon->id][$message_index]) && !empty($receivers_messages[$coupon->id][$message_index])) { 
          $message_from_sender = $receivers_messages[$coupon->id][$message_index]; 
         } else { 
          $message_from_sender = ''; 
         } 
         for ($i = 0; $i < $qty; $i++) { 
          if ($coupon->type != 'smart_coupon') continue; // only process smart_coupon here, rest coupon will be processed by function update_coupon 
          $this->generate_smart_coupon($email_id, $credit_amount, $order_id, $coupon, 'smart_coupon', $gift_certificate_receiver_name, $message_from_sender, $gift_certificate_sender_name, $gift_certificate_sender_email, $item_id); 
          $smart_coupon_codes = array(); 
         } 
        } 

라인 5194 : 메소드 변경 및 변수 확장 청정도

public function generate_smart_coupon($email, $amount, $order_id = '', $coupon = '', $discount_type = 'smart_coupon', $gift_certificate_receiver_name = '', $message_from_sender = '', $gift_certificate_sender_name = '', $gift_certificate_sender_email = '', $item_id = '') { 
      return apply_filters('generate_smart_coupon_action', $email, $amount, $order_id, $coupon, $discount_type, $gift_certificate_receiver_name, $message_from_sender, $gift_certificate_sender_name, $gift_certificate_sender_email, $item_id); 
     } 

라인 (5212) :

public function generate_smart_coupon_action($email, $amount, $order_id = '', $coupon = '', $discount_type = 'smart_coupon', $gift_certificate_receiver_name = '', $message_from_sender = '', $gift_certificate_sender_name = '', $gift_certificate_sender_email = '', $item_id = '') { 

라인 5307에 필터 방식을 확장하십시오 post_meta의 $ ITEM_ID를 저장

update_post_meta($smart_coupon_id, 'apply_before_tax', $apply_before_tax ); 
       update_post_meta($smart_coupon_id, 'free_shipping', $free_shipping); 
       update_post_meta($smart_coupon_id, 'product_categories', $product_categories ); 
       update_post_meta($smart_coupon_id, 'exclude_product_categories', $exclude_product_categories); 
       update_post_meta($smart_coupon_id, 'generated_from_order_id', $order_id); 
       update_post_meta($smart_coupon_id, 'generated_from_item_id', $item_id);