我使用Woocommerce和Product Addons插件为产品添加额外字段。其中一个字段是一个电子邮件地址,用于让人们将订单确认发送到与结帐页面上显示的帐单邮寄地址不同的地址。应将电子邮件发送到这两个地址。
有关如何修改functions.php文件以执行此操作的任何想法?
答案 0 :(得分:1)
在 woocommerce_email_recipient_{$this->id}
过滤器钩子中,您可以使用$order
参数来获取第二封电子邮件。
但首先让我们在全球范围内添加一个带有产品附加组件插件的电子邮件字段......
您可以注意到此字段的标签是“电子邮件”......
现在,如果我在 wp_woocommerce_order_itemmeta
中查看此订单的数据库,我可以看到meta_key "Email"
meta_value "loic@TheAztec.com"
:
现在我可以在下面的代码中设置正确的meta_key
来获取我的电子邮件。
以下代码将添加此附加电子邮件收件人以进行处理和完成客户订单电子邮件通知:
add_filter( 'woocommerce_email_recipient_customer_completed_order', 'additional_customer_email_recipient', 10, 2 ); // Processing Order
add_filter( 'woocommerce_email_recipient_customer_processing_order', 'additional_customer_email_recipient', 10, 2 ); // Completed Order
function additional_customer_email_recipient( $recipient, $order ) {
if ( ! is_a( $order, 'WC_Order' ) ) return $recipient;
$additional_recipients = array(); // Initializing…
// Iterating though each order item
foreach( $order->get_items() as $item_id => $item_data ){
// HERE set the the correct meta_key (like 'Email') to get the correct value
$email = wc_get_order_item_meta( $item_id, 'Email', true );
// Avoiding duplicates (if many items with many emails)
// or an existing email in the recipient
if( ! in_array( $email, $additional_recipients ) && strpos( $recipient, $email ) === false )
$additional_recipients[] = $email;
}
// Convert the array in a coma separated string
$additional_recipients = implode( ',', $additional_recipients);
// If an additional recipient exist, we add it
if( count($additional_recipients) > 0)
$recipient .= ','.$additional_recipients;
return $recipient;
}
代码放在活动子主题(或主题)的function.php文件中,或者放在任何插件文件中。
经过测试和工作。
答案 1 :(得分:0)
您可以在function.php中添加以下代码
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;
}
如果您想在BCC发送电子邮件,请尝试以下代码:
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";
}