У меня есть вопрос по поводу моего кода ниже. Мы используем код отсюда: Плагин Dokan отправляет несколько электронных писем для клиента для одного заказа, чтобы система не отправляла клиенту электронные письма с обработкой заказов для подзаказа и, следовательно, только для родительского заказа. (Это полностью работает! = ›Часть 1 в приведенном ниже коде)
Проблема: однако мы также должны убедиться, что электронное письмо с выполненным заказом не отправляется для родительского заказа, если в этом заказе есть дополнительные заказы. Почему? Поскольку после завершения каждого подзаказа родительский заказ также автоматически помечается как завершенный. И мы не хотим отправлять это письмо, если этот родительский заказ выполнен.
Для этого мы меняем ловушку, а также оператор IF. Но в настоящее время электронное письмо с завершенным заказом также отправляется после выполнения всех дополнительных заказов. (Часть 2 в приведенном ниже коде)
Насколько я понимаю, я должен проверить, ЯВЛЯЕТСЯ ли заказ родительским, и, ЕСЛИ да, не отправлять письмо о завершении заказа. if (get_post_meta( $order->get_id(), 'has_sub_order', true ) ){ return ''; }
ОБНОВЛЕНИЕ: я думаю, что это не работает из-за использованного хука woocommerce_email_recipient_customer_completed_order
. Для обработки почты я использую woocommerce_email_recipient_customer_processing_order
, и это работает.
// PART 1
// Do not send order processing mail for sub orders
add_filter( 'woocommerce_email_recipient_customer_processing_order', 'conditional_email_notification_order_processing', 10, 2 );
function conditional_email_notification_order_processing( $recipient, $order ) {
if( is_admin() ) return $recipient;
if (!get_post_meta( $order->get_id(), 'has_sub_order', true ) && !empty(wp_get_post_parent_id($order->get_id())) ){
return '';
}
return $recipient;
}
// PART 2
// Do not send order completed mail for parent order (IF SUB ORDERS = TRUE)
add_filter( 'woocommerce_email_recipient_customer_completed_order', 'conditional_email_notification_order_completed', 10, 2 );
function conditional_email_notification_order_completed( $recipient, $order ) {
if( is_admin() ) return $recipient;
if ( get_post_meta( $order->get_id(), 'has_sub_order', true ) && empty(wp_get_post_parent_id($order->get_id())) ){
return '';
}
return $recipient;
}