Мне нужно знать новый адрес электронной почты WooCommerce на указанный адрес электронной почты только для определенных продуктов.
Пример: если какой-либо орган покупает продукт, ему нужен новый адрес электронной почты для заказа Y. Y не установлен в качестве обратного конца Получателя. Есть ли крючок для достижения этого?
Я пробовал следовать
add_action( 'woocommerce_order_status_completed', 'custom_woocommerce_order_status_completed' ); function custom_woocommerce_order_status_completed( $order_id ) { $order = new WC_Order($order_id); $items = $order->get_items(); foreach ($items as $key => $value) { if($value == 10) { // given product id // trigger order complete email for specific email address } } }
В своих функциях вы можете поместить следующее:
add_filter( 'woocommerce_email_recipient_customer_completed_order', 'your_email_recipient_filter_function', 10, 2); function your_email_recipient_filter_function($recipient, $object) { $recipient = $recipient . ', me@myemail.com'; return $recipient; }
единственным недостатком является то, что получатель увидит и ваш адрес и его собственный в поле Кому:.
Кроме того, вы можете использовать фильтр woocommerce_email_headers. переданный объект $ позволяет вам применить это только к заполненному электронному письму заказа:
add_filter( 'woocommerce_email_headers', 'mycustom_headers_filter_function', 10, 2); function mycustom_headers_filter_function( $headers, $object ) { if ($object == 'customer_completed_order') { $headers .= 'BCC: My name <my@email.com>' . "\r\n"; } return $headers; }
Взято из этого ответа от Ewout .