Отправить заказ на удержание электронной почты для определенного способа доставки в Woocommerce - PullRequest
0 голосов
/ 24 июня 2018

Я использую Wordpress 4.9.6 и WooCommerce версии 3.4.3, и мне нужно отправить электронное письмо с заказом на удержание для определенного способа доставки.

Причина? Я использую плагин доставки DHL для расчета доставки, также доступен альтернативный способ доставки. Если пользователь выбирает доставку DHL при оформлении заказа, стоимость доставки рассчитывается и заказ готов. Однако, если они выберут «альтернативный» способ доставки, я должен сообщить им, что их заказ приостановлен до тех пор, пока они не оплатят доставку, поскольку «альтернативный» метод переименован в «Бесплатная доставка», и я выставлю отдельный счет для них. заплатите за доставку, как только они заказали.

В поисках решения моей проблемы в этой ветке ответов я нашел код, соответствующий моим потребностям: Настройка уведомления по электронной почте о новом заказе Woocommerce на основе способа доставки

Но я не могу понять, как редактировать этот код, чтобы он работал для моего конкретного сценария.

Ваша помощь очень ценится.

1 Ответ

0 голосов
/ 24 июня 2018

Чтобы он работал для переименованного метода бесплатной доставки, вам нужно немного изменить код:

add_action ('woocommerce_email_order_details', 'custom_email_notification_for_shipping', 5, 4);
function custom_email_notification_for_shipping( $order, $sent_to_admin, $plain_text, $email ){

    // Only for "On hold" email notification and "Free Shipping" Shipping Method
    if ( 'customer_on_hold_order' == $email->id && $order->has_shipping_method('free_shipping') ){
        $order_id = $order->get_id(); // The Order ID

        // Your message output
        echo "<h2>Shipping notice</h2>
        <p>Your custom message goes here… your custom message goes here… your custom message goes here… your custom message goes here… your custom message goes here…</p>";
    }
}

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

enter image description here


Принудительное уведомление по электронной почте «На удержании» и «Завершено» (необязательно)

При изменении статуса заказа приведенный ниже код вызовет уведомление по электронной почте «На удержании» только для переименованного метода доставки «Бесплатная доставка» и уведомления по электронной почте «Завершено».

add_action( 'woocommerce_order_status_changed', 'sending_on_hold_email_notification', 20, 4 );
function sending_on_hold_email_notification( $order_id, $old_status, $new_status, $order ){
    // Only  "On hold" order status and "Free Shipping" Shipping Method
    if ( $order->has_shipping_method('free_shipping') && $new_status == 'on-hold' ){
        // Getting all WC_emails objects
        $notifications = WC()->mailer()->get_emails();
        // Send "On hold" email notification
        $notifications['WC_Email_Customer_On_Hold_Order']->trigger( $order_id );
    } elseif ( ! $order->has_shipping_method('free_shipping') && $new_status == 'completed' ){
        // Getting all WC_emails objects
        $notifications = WC()->mailer()->get_emails();
        // Send "On hold" email notification
        $notifications['WC_Email_Customer_Completed_Order']->trigger( $order_id );
    }
}

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

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