Как получить идентификатор заказа в woocommerce_email_headers

Я пытаюсь установить адрес электронной почты, когда у вас новый заказ. И я сохранил new email в wp_postmeta .

Как получить $order_id при использовании woocommerce_email_headers ?

Мне нужно, чтобы order_id использовал его с get_post_meta() .

Вот мой код:

 function techie_custom_wooemail_headers( $headers, $object) { $email = get_post_meta( $order_id, '_approver_email', true ); // Replace the emails below to your desire email $emails = array('eee@hotmail.com', $email); switch($object) { case 'new_order': $headers .= 'Bcc: ' . implode(',', $emails) . "\r\n"; break; case 'customer_processing_order': $headers .= 'Bcc: ' . implode(',', $emails) . "\r\n"; break; case 'customer_completed_order': case 'customer_invoice': $headers .= 'Bcc: ' . implode(',', $emails) . "\r\n"; break; default: } return $headers; } add_filter( 'woocommerce_email_headers', 'techie_custom_wooemail_headers', 10, 2); 

Как мне вернуть данные?

Благодарю.

Я сделал несколько тестов, пытаясь выводить необработанные данные из объекта $ order без успеха. После некоторых других тестов я получил правильный идентификатор заказа. Я использую код ниже для моего теста, чтобы быть уверенным. Замените значение $your_email по электронной почте. Затем вы получите электронное письмо с идентификатором заказа в заголовке:

 function testing_hook_headers( $headers, $id, $order ) { $order_id = $order->id; $your_email = '<name@email.com>'; $headers = "To: Order Num $order_id $your_email"; return $headers; } add_filter( 'woocommerce_email_headers', 'testing_hook_headers', 10, 3); 

Итак, вот ваш код:

 function techie_custom_wooemail_headers( $headers, $id, $order ) { // The order ID $order_id = $order->id; $email = get_post_meta( $order_id, '_approver_email', true ); // Replace the emails below to your desire email $emails = array('eee@hotmail.com', $email); switch($object) { case 'new_order': $headers .= 'Bcc: ' . implode(',', $emails) . "\r\n"; break; case 'customer_processing_order': $headers .= 'Bcc: ' . implode(',', $emails) . "\r\n"; break; case 'customer_completed_order': case 'customer_invoice': $headers .= 'Bcc: ' . implode(',', $emails) . "\r\n"; break; default: } return $headers; } add_filter( 'woocommerce_email_headers', 'techie_custom_wooemail_headers', 10, 3); 

Я не проверяю ваш код, как он особенный, но у вас есть правильный способ получить идентификатор заказа.

В версии WooCommerce версии 2.3 и выше они изменили количество параметров, переданных фильтру

 function techie_custom_wooemail_headers( $headers, $id, $object) { $email = get_post_meta( $order_id, '_approver_email', true ); // Replace the emails below to your desire email $emails = array('eee@hotmail.com', $email); switch($id) { case 'new_order': $headers .= 'Bcc: ' . implode(',', $emails) . "\r\n"; break; case 'customer_processing_order': $headers .= 'Bcc: ' . implode(',', $emails) . "\r\n"; break; case 'customer_completed_order': case 'customer_invoice': $headers .= 'Bcc: ' . implode(',', $emails) . "\r\n"; break; default: } return $headers; } add_filter( 'woocommerce_email_headers', 'techie_custom_wooemail_headers', 10, 3); 

$object – указывает, что это письмо предназначено, например, для клиента, продукта или электронной почты.

попробуйте var_dump($object); exit; var_dump($object); exit; внутренний обратный вызов фильтра.