【问题标题】:Woocommerce Bookings - Send Booking Confirmation Email to Custom Field ValueWoocommerce 预订 - 将预订确认电子邮件发送到自定义字段值
【发布时间】:2020-08-21 17:29:38
【问题描述】:

我正在尝试连接到“woocommerce_email_recipient_booking_confirmed”以更新/添加到收件人字段。下面的链接非常适用于默认的 WooCommerce 电子邮件(及其操作)。如果我在操作中手动输入电子邮件,则该操作有效,但我需要来自客户输入的电子邮件(通过产品页面上的自定义字段)。

我相信这与 class-wc-email-booking-confirmed.php 有关。当我将它与 class-wc-email-customer-completed-order.php 进行比较时

class-wc-email-booking-confirmed.php

public function trigger( $booking_id )

class-wc-email-customer-completed-order.php

public function trigger( $order_id, $order = false )

我的代码(我没有从下面的资源中更改):

add_filter( 'woocommerce_email_recipient_booking_confirmed', 'additional_customer_email_recipient', 9999, 2 ); // Completed Order

function additional_customer_email_recipient( $recipient, $order ) {

  if ( ! is_a( $order, 'WC_Order' ) ) return $recipient;  // when I comment this out, an ajax error is thrown. This is why I believe the order object directly accessible yet.

    $additional_recipients = array(); // Initializing…

    foreach( $order->get_items() as $item_id => $item_data ){
        $email = wc_get_order_item_meta( $item_id, 'Email Address', true );

        if( ! in_array( $email, $additional_recipients ) && strpos( $recipient, $email ) === false )
            $additional_recipients[] = $email;
    }

    $additional_recipients = implode( ',', $additional_recipients);

    if( count($additional_recipients) > 0)
    {
        $recipient = ','.$additional_recipients;
    }
    return $recipient;
}

Send Woocommerce Order to email address listed on product page

【问题讨论】:

    标签: php wordpress


    【解决方案1】:

    因为它不是订单对象,我只需要调用 get_order()。

    $order = $order->get_order();
    

    代码:

    add_filter( 'woocommerce_email_recipient_booking_confirmed', 'additional_customer_email_recipient', 10, 2 );
    
    function additional_customer_email_recipient( $recipient, $order ) {
    
        $order = $order->get_order();
    
        $additional_recipients = array(); 
    
        foreach( $order->get_items() as $item_id => $item_data ){
            $email = wc_get_order_item_meta( $item_id, 'Email Address', true );
    
            if( ! in_array( $email, $additional_recipients ) && strpos( $recipient, $email ) === false )
    
                $additional_recipients[] = $email;
        }
    
        $additional_recipients = implode( ',', $additional_recipients);
    
        if( count($additional_recipients) > 0)
        {
            $recipient = $additional_recipients;
        }
        return $recipient;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-22
      • 1970-01-01
      • 1970-01-01
      • 2016-03-03
      • 1970-01-01
      相关资源
      最近更新 更多