Как отключить уведомление о новом заказе WooCommerce для людей с ограниченными возможностями?

Вопрос или проблема

У меня отключены электронные письма для администратора или владельца магазина, но я хотел бы программно запускать действие, чтобы, как только функция запускается с помощью AJAX для завершения заказа, я мог отправить электронное письмо как задумано, но только после AJAX-функции, которая запускается при возврате на страницу подтверждения после оплаты.

Текущий поток выглядит следующим образом:
Добавить в корзину -> Корзина -> Оформление -> Страница подтверждения (отключена отправка нового заказа здесь) -> Перенаправление на оплату -> Оплата -> Перенаправление на финальную страницу подтверждения (отправка уведомления о новом заказе здесь).

Я пытаюсь использовать следующее для отправки отключенного нового письма-заказа:

// Получите объект WC_Email_New_Order
$email_new_order = WC()->mailer()->get_emails()['WC_Email_New_Order'];
// Отправка уведомления о новом заказе для $order_id (ID заказа)
$email_new_order->trigger( $order->get_id() );

но письмо никогда не отправляется, я предполагаю, из-за того, что оно отключено в WC > Настройки > Электронная почта > Новый заказ – но есть ли способ обойти это?

В итоге я сам ответил на свой вопрос, используя фильтр woocommerce_email_enabled_new_order и установив его в true перед отправкой письма, например:

add_filter( 'woocommerce_email_enabled_new_order', function($enabled, $order) {
return true;
}, 10, 2 );

Ответ или решение

Формирование программного отправления уведомлений о новом заказе в WooCommerce может быть сложной задачей, особенно когда стандартные уведомления были вручную отключены в настройках административной панели. Однако существует способ обойти отключение и выполнить отправку нужного уведомления о новом заказе только в определённый момент, задействовав AJAX функцию.

Пошаговая инструкция по внедрению

  1. Отключение стандартного уведомления:
    Если уведомление о новом заказе отключено в панели WordPress через настройки WooCommerce, оно не будет отправлено автоматически после завершения покупки. Однако, чтобы обеспечить отправку в нужное время, необходимо использовать фильтры WooCommerce.

  2. Использование AJAX для управления процессом:
    После выполнения необходимых действий на странице чека и после оплаты, AJAX может быть использован для инициации нужной логики. В вашем случае заказ окончательно формализуется и именно в этот момент необходимо выслать уведомление.

  3. Установка фильтра:
    Используйте фильтр woocommerce_email_enabled_new_order, чтобы временно разрешить отправку уведомления о новом заказе:

    add_filter('woocommerce_email_enabled_new_order', function($enabled, $order) {
       return true; // активируем отправку
    }, 10, 2);
  4. Программное инициирование отправки уведомления:
    Чтобы программно инициировать отправку уведомления, выполните следующее:

    // Получите объект письма для нового заказа
    $email_new_order = WC()->mailer()->get_emails()['WC_Email_New_Order'];
    // Запустите отправку уведомления о новом заказе для конкретного ID
    $email_new_order->trigger($order->get_id());

Заключение:

Внедрение такого решения позволяет обеспечить гибкость в управлении процессом уведомлений в WooCommerce, сохраняя контроль и автоматизируя бизнес-процессы. Программное использование фильтров предоставляет возможность обхода стандартных ограничений, что идеально подходит для таких уникальных сценариев, как ваш.

Такой подход не только решает текущую задачу, но и может быть масштабирован или адаптирован для других типов уведомлений или специфических бизнес-ситуаций.

Оцените материал
Добавить комментарий

Капча загружается...