Woocommerce: все новые выполненные заказы на удержание (в частности, наложенный платеж) и отправка только одного отложенного электронного письма в качестве стандартного подтверждения

Я живу и работаю в Японии. У нас есть небольшая устричная компания с ограниченными ресурсами, и я сам занимаюсь программированием, но у меня ограниченные знания и навыки. Первый раз, извините, если это не хороший вопрос или я ошибаюсь … Заранее спасибо.

Я использую последнюю версию Woocommerce 3.2.3. Я также использую несколько плагинов, в том числе управляющий по электронной почте, пользовательское электронное письмо для благодарности и подтверждения банковских (furikomi) платежей и плагин WooCommerce для Японии.

Я хочу создать рабочий процесс, похожий на другие популярные японские сайты ЕС (rakuten karamishop, Yahoo! аукционы и т. Д.). В Японии нет автозаполнения, он настолько сфокусирован на обслуживании, что это безумие, все должно быть тщательно проверено и подтверждено. Если вам интересно, японский стандартный поток:
Заказчик делает заказ ->
Клиент получает полное подтверждение по электронной почте ->
Мы проверяем, чтобы сборы были правильными, а заказ — это то, что мы можем заполнить и обработать ->
Мы отправляем заказ на обработку с конкретной датой и временем доставки и т. Д. -> Мы упаковываем и заполняем заказ, а затем отправляем «отправленное» сообщение с кодом отслеживания.

ТЕМ НЕ МЕНИЕ
Я нашел это:

add_action( 'woocommerce_thankyou', 'custom_woocommerce_auto_complete_order' );
function custom_woocommerce_auto_complete_order( $order_id ) {
global $woocommerce;
if ( !$order_id )
return;
$order = new WC_Order( $order_id );
$order->update_status( 'on-hold' );
}

от Вот. И много вариации вместе этот тема. Это приведет меня на полпути туда. Но электронная почта все еще запускает обработку (в любом случае для PayPal и COD).

Я также знаю, что электронная почта для заказов наложенным платежом, кажется, перехвачена

add_filter( 'woocommerce_payment_complete_order_status', array( $this, 'change_payment_complete_order_status' ), 10, 3 );

в файле «class-wc-gateway-cod.php». И что эти триггеры приведут к электронной почте, которая мне не нужна, к «обработке» электронной почты.

// Triggers for this email
add_action( 'woocommerce_order_status_failed_to_processing_notification', array( $this, 'trigger' ), 10, 2 );
add_action( 'woocommerce_order_status_on-hold_to_processing_notification', array( $this, 'trigger' ), 10, 2 );
add_action( 'woocommerce_order_status_pending_to_processing_notification', array( $this, 'trigger' ), 10, 2 );

Сейчас у нас есть три способа оплаты: Paypal, Furikomi (банковский перевод для Японии) и наложенный платеж. Я хочу, чтобы все эти способы оплаты вернулись с сообщением об удержании, которое мы будем использовать в качестве сообщения «автоматического подтверждения». Статус их в системе также должен быть «на удержании». Затем мы можем переместить их в обработку и после этого мы сможем справиться со всем без проблем.

Итак, в итоге, я думаю, нужно:
1. Отцепить все статусы заказа со всех шлюзов.
2. По умолчанию все выполненные новые заказы имеют статус «в ожидании». 3. Это должно сделать так, чтобы электронная почта «на удержании» запускалась, убивая двух зайцев одним выстрелом.

Мне кажется, мне только удалось изменить статус с того, что было, ПОСЛЕ того, как обработка заказа и триггеры завершили на «в ожидании» (похоже на официальный плагин), что только помогает нам на заднем плане.

Примечание стороны: Они действительно должны просто включить это в бесплатный плагин Woocommerce для Японии, если они действительно хотят, чтобы Woocommerce конкурировала здесь, но это сообщество медленное, и когда я задал вопрос, они только что предложили мне заплатить за пользовательский плагин.

Спасибо!

2

Решение

РЕДАКТИРОВАТЬ Я понял это! Я только что нашел эту страницу с отцепленными кодами для писем. Отцепил и переподключил с этим новым триггером электронной почты. Вот код на случай, если это кому-нибудь понадобится:

/**
* All orders that would normally go from pending to processing go from pending to on-hold
*/

add_action( 'woocommerce_thankyou', 'custom_woocommerce_auto_onhold_order' );

function custom_woocommerce_auto_onhold_order( $order_id ) {
global $woocommerce;
if ( !$order_id )
return;
$order = new WC_Order( $order_id );
$order->update_status( 'on-hold' ); //All new orders go to "on-hold"}

add_action( 'woocommerce_email', 'unhook_new_order_processing_emails' );

function unhook_new_order_processing_emails( $email_class ) {
// Turn off pending to processing for now
remove_action( 'woocommerce_order_status_pending_to_processing_notification', array( $email_class->emails['WC_Email_Customer_Processing_Order'], 'trigger' ) );
// Turn it back on but send the on-hold email
add_action( 'woocommerce_order_status_pending_to_processing_notification', array( $email_class->emails['WC_Email_Customer_On_Hold_Order'], 'trigger' ) );
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]