Woocommerce Bookings - отправьте электронное письмо с подтверждением бронирования на значение настраиваемого поля - PullRequest
0 голосов
/ 06 мая 2020

Я пытаюсь подключиться к 'woocommerce_email_recipient_booking_confirmed', чтобы обновить / добавить в поле получателя. Ссылка ниже отлично работает для электронных писем WooCommerce по умолчанию (и их действий). Действие работает, если я вручную ввожу электронное письмо в рамках действия, но мне нужно, чтобы электронное письмо пришло из ввода клиента (через настраиваемое поле на странице продукта).

Я считаю, что это как-то связано с class-w c -email-booking-loaded. php. Когда я сравниваю его с class-w c -email-customer-completed-order. php

class-w c -email-booking-loaded. php

public function trigger( $booking_id )

class-w c -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;
}

Отправьте заказ Woocommerce на адрес электронной почты, указанный на странице продукта

1 Ответ

0 голосов
/ 06 мая 2020

Это было потому, что это не был объект заказа, мне просто пришлось вызвать 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...