Я нашел решение, но я должен был поместить код внутри «WooCommerce-смарт-купонов .php ".
Line 379: Расширение фильтра Переменные
add_filter('generate_smart_coupon_action', array( $this, 'generate_smart_coupon_action'), 1, 10);
Line 4783: Расширение переменной с линией 4816 $ 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;
}
: Получите $ 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: Измените способ и увеличьте параметр Ables
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);
}
Line 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 = '') {
Line 5307: Храните $ ITEM_ID в post_meta
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);