Триггер исходящей электронной почты Woocommerce на основе заметки о заказе - PullRequest
1 голос
/ 20 марта 2019

Можно ли инициировать исходящую электронную почту на основе добавленной заметки о заказе в WooCommerce?

Мы интегрированы с системой управления запасами (Mintsoft), которая в основном отправляет нам идентификатор отслеживания через заметки о заказе (все связаны через REST API)

Мне удалось подключиться к содержанию заметки на основе текста внутри, так как объект заказа содержит почти все, что вы могли захотеть - однако это выходит за рамкиСуть в том, что обычная «заполненная» почта исчезает, что означает, что об изменении шаблона не может быть и речи.

Моя идея состояла в том, чтобы отключить автоматическую электронную почту в зависимости от статуса и попробовать мою собственную, есть ли ловушка для этого?

1 Ответ

0 голосов
/ 21 марта 2019

Если вы посмотрите на код метода WC_Order add_order_note() , вы увидите внутри него два доступных крючка, и вы можете использовать первый удобный.

В приведенном ниже коде у вас есть все данные аргументов, идентификатор заказа, объект WC_Order и способ отправки уведомления по электронной почте:

add_filter( 'woocommerce_new_order_note_data', 'filter_woocommerce_new_order_note_data', 10, 2 );
function filter_woocommerce_new_order_note_data( $args, $args2 ) {
    if( ! $args2['is_customer_note'] ){
        // Get an instance of the WC_Order Object
        $order = wc_get_order( $args2['order_id'] );

        // Getting all WC_emails objects
        $mailer = WC()->mailer()->get_emails();

        // Send the "Completed" notification
        $mailer['WC_Email_Customer_Completed_Order']->trigger( $args2['order_id'] );
    }

    return $args;
}

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

Похожие: Добавить имя пользователя менеджера магазина в Woocommerce Admin Примечания к заказу

...