Добавьте ответное электронное письмо к уведомлениям клиентов на основе методов доставки в Woocommerce - PullRequest
0 голосов
/ 13 ноября 2018

Все заказы электронной почты отправляются ЗАКАЗЧИКУ с адреса электронной почты woocommerce по умолчанию, например, webshop@shop.com, и это нормально, но я хочу добавить ответный адрес электронной почты для этих писем, чтобы пользователь мог ответить на этот пользовательский адрес, например reply@webshop.com.

Также я хочу установить этот адрес электронной почты для ответа на основе $order способа доставки.Если способ доставки - 'local_pickup_plus' , установите адрес ответа на reply1@webshop.com, иначе установите reply2@webshop.com.

Я выяснюЯ могу изменить заголовки с помощью фильтра woocommerce_email_headers, но только для электронной почты, отправляемой администратору.

add_filter( 'woocommerce_email_headers', 'mycustom_headers_filter_function', 10, 3);
function mycustom_headers_filter_function( $headers, $object, $order ) {
    if ($object == 'new_order') {
        $headers .= 'Reply-to: teszt@teszt.hu';
    }

    return $headers;
}

Как настроить это для электронных писем клиентов?

1 Ответ

0 голосов
/ 14 ноября 2018

Следующий код позволит вам добавить другое ответное письмо, условно основанное на способах доставки для уведомлений по электронной почте:

// Utility function to get the shipping method Id from order object
function wc_get_shipping_method_id( $order ){
    foreach ( $order->get_shipping_methods() as $shipping_method ) {
        return $shipping_method->get_method_id();
    }
}

// Add coditionally a "reply to" based on shipping methods IDs for specific email notifications
add_filter( 'woocommerce_email_headers', 'add_headers_replay_to_conditionally', 10, 3 );
function add_headers_replay_to_conditionally( $headers, $email_id, $order ) {
    // Avoiding errors
    if ( ! is_a( $order, 'WC_Order' ) || ! isset( $email_id ) )
        return $headers;

    // The defined emails notifications to customer
    $allowed_email_ids = array('customer_on_hold_order', 'customer_processing_order', 'customer_completed_order');

    // Only for specific email notifications to the customer
    if( in_array( $email_id, $allowed_email_ids ) ) {
        // Local Pickup Plus shipping method
        if( wc_get_shipping_method_id( $order ) === 'local_pickup_plus' ){
            $headers .= "Reply-to: reply1@webshop.com". "\r\n"; // Email adress 1
        } 
        // Other shipping methods
        else {
            $headers .= "Reply-to: reply2@webshop.com". "\r\n"; // Email adress 2
        }
    }

    return $headers;
}

Код находится в файле function.php вашей активной дочерней темы (активной темы),Проверено и работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...