当前位置: 首页 > 知识库问答 >
问题:

将Woocommerce订单发送到产品页面上列出的电子邮件地址

晏阳飙
2023-03-14

我正在使用Woocommerce和Product Addons插件为产品添加额外的字段。其中一个字段是一个电子邮件地址,允许用户将订单确认发送到与结账页面上显示的账单地址不同的地址。电子邮件应该发送到这两个地址。

对于如何修改functions.php文件来实现这一点有什么想法吗?

共有2个答案

姚俊材
2023-03-14

可以在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;
}

如果你想用密件抄送邮件,请试试下面的代码:

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";
    }
乌鸿宝
2023-03-14

woocommerce_email_recipient_{$this->id}筛选器挂钩中,可以使用$order参数获取第二封电子邮件。

但首先让我们添加一个全局的电子邮件字段与产品插件插件…

  1. 产品上的“添加”字段(填充该字段并添加到购物车):

正如你可以注意到的,这个字段的标签是“电子邮件”…

现在,如果我在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中的产品,另一封邮件包含存储2中的产品。如果仅订购了位于存储1的产品,则不应发送电子邮件2,反之亦然。 存储信息是每个产品上的自定义元字段。 我添加了一个自定义电子邮件类,它是的副本,但仅在需要时更改了名称。 我一直在寻找钩子和过滤器,但我不能一路走下去。我也一直在考虑

  • 我已经在我的woocommerce网站上定制了拖欠订单的文本,并且也想添加同样的文本到订单确认电子邮件中。 例如,我有我的购物车和结账显示“库存”或“定购”在(变异)元下的每一个产品。 为了获得结果,我在模板文件中添加了以下代码,并在模板文件中添加了类似的代码,以使其显示在签出页面上: 现在我想要同样的事情显示在我的订单确认电子邮件。我特别希望它在客户的电子邮件,但管理电子邮件也可以。 现在,任何

  • 我在我的木业商店里遇到了一个很奇怪的问题。有几天“Customer_Processing_Order”电子邮件不再发送给客户。即使我在订单详细信息中触发手动发送此电子邮件,也没有发生任何事情。 在一般电子邮件中,发送与SMTP数据一起工作。当我将状态设置为“已完成”时,电子邮件将被发送。只有订单确认不起作用。 电子邮件被激活,我也检查了错误日志。我还安装了订单电子邮件的预览插件。当我想生成预览时,

  • 我正在尝试将产品类别添加到电子邮件通知中。自定义字段(时间和日期)起作用,但产品类别显示为“数组”。

  • 我的Wordpress安装有问题,更具体的说是WooCommerce。 我在过去几个月中一直在工作的客户希望,每次客户完成/支付订单时,除了标准的订单确认电子邮件外,还会向他的电子邮件地址发送一封自定义电子邮件。 简而言之:我需要在订单完成时给客户发送一封自定义邮件。如何在functions.php中做到这一点? 我尝试使用官方文档中描述的各种钩子和函数,但无法弄明白。 Wordpress的版本是

  • 好的,基本上我们在我们的WooCommerce商店中使用ACF创建了一个自定义字段,以便为特定的产品添加一个“发货延迟”通知。