Я пытаюсь установить адрес электронной почты, когда у вас новый заказ. И я сохранил 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;
внутренний обратный вызов фильтра.