在 Woocommerce 3.3 中下订单后,向客户发送暂停订单通知
Send customer on-hold order notification once order is placed in Woocommerce 3.3
我有这个问题。此时此刻,我在我的网站上使用 Woocommerce 3.3.3 并注意到一个奇怪的问题。客户下单后,他们的订单卡在 "On Hold" 到 Woocommerce 订单中。
客户没有收到任何订单确认邮件。当转到订单并将订单状态从 "On Hold" 移动到 "Processing" 客户收到订单确认邮件时,这应该是自动的。搜索了一下,发现这个 "fix":
add_filter( ‘woocommerce_defer_transactional_emails’, ‘__return_false’ );
将放入 functions.php,但似乎没有任何改变。有人有类似问题吗?
请尝试以下操作:
add_action('woocommerce_new_order', 'new_order_on_hold_notification', 30, 1 );
function new_order_on_hold_notification( $order_id ) {
$order = wc_get_order( $order_id );
// Only for on hold new orders
if( ! $order->has_status('on-hold') )
return; // Exit
// Send Customer On-Hold Order notification
WC()->mailer()->get_emails()['WC_Email_Customer_On_Hold_Order']->trigger( $order_id );
}
要将 "on-hold" 已付款订单更改为 "processing",请使用:
add_action( 'woocommerce_thankyou', 'custom_woocommerce_auto_prrocessing_paid_order', 10, 1 );
function custom_woocommerce_auto_prrocessing_paid_order( $order_id ) {
if ( ! $order_id )
return;
$order = wc_get_order( $order_id );
// No updated status for orders delivered with Bank wire, Cash on delivery and Cheque payment methods.
if ( in_array( $order->get_payment_method(), array( 'bacs', 'cod', 'cheque', '' ) ) ) {
return;
}
// "Processing" updated status for paid Orders with all others payment methods
else {
if( $order->has_status('on-hold') )
$order->update_status( 'processing' );
}
}
代码进入您的活动子主题(或活动主题)的 function.php 文件。它应该可以工作。
只想指出:
@LoicTheAztec 提到的解决方案有效:
add_action('woocommerce_new_order', 'new_order_on_hold_notification', 30, 1 );
function new_order_on_hold_notification( $order_id ) {
$order = wc_get_order( $order_id );
// Only for on hold new orders
if( ! $order->has_status('on-hold') )
return; // Exit
// Send Customer On-Hold Order notification
WC()->mailer()->get_emails()['WC_Email_Customer_On_Hold_Order']->trigger( $order_id );
}
但是此解决方案存在问题,在调用 woocommerce_new_order
挂钩时订单尚未完全创建,因此在电子邮件通知中未显示订单项目。请改用以下挂钩:
add_action('woocommerce_checkout_order_processed', 'new_order_on_hold_notification');
function new_order_on_hold_notification( $order_id ) {
$order = wc_get_order( $order_id );
// Only for on hold new orders
if( ! $order->has_status('on-hold') )
return; // Exit
// Send Customer On-Hold Order notification
WC()->mailer()->get_emails()['WC_Email_Customer_On_Hold_Order']->trigger( $order_id );
}
在调用 woocommerce_checkout_order_processed
时,您的电子邮件中已经提供了订单商品。
我有这个问题。此时此刻,我在我的网站上使用 Woocommerce 3.3.3 并注意到一个奇怪的问题。客户下单后,他们的订单卡在 "On Hold" 到 Woocommerce 订单中。
客户没有收到任何订单确认邮件。当转到订单并将订单状态从 "On Hold" 移动到 "Processing" 客户收到订单确认邮件时,这应该是自动的。搜索了一下,发现这个 "fix":
add_filter( ‘woocommerce_defer_transactional_emails’, ‘__return_false’ );
将放入 functions.php,但似乎没有任何改变。有人有类似问题吗?
请尝试以下操作:
add_action('woocommerce_new_order', 'new_order_on_hold_notification', 30, 1 );
function new_order_on_hold_notification( $order_id ) {
$order = wc_get_order( $order_id );
// Only for on hold new orders
if( ! $order->has_status('on-hold') )
return; // Exit
// Send Customer On-Hold Order notification
WC()->mailer()->get_emails()['WC_Email_Customer_On_Hold_Order']->trigger( $order_id );
}
要将 "on-hold" 已付款订单更改为 "processing",请使用:
add_action( 'woocommerce_thankyou', 'custom_woocommerce_auto_prrocessing_paid_order', 10, 1 );
function custom_woocommerce_auto_prrocessing_paid_order( $order_id ) {
if ( ! $order_id )
return;
$order = wc_get_order( $order_id );
// No updated status for orders delivered with Bank wire, Cash on delivery and Cheque payment methods.
if ( in_array( $order->get_payment_method(), array( 'bacs', 'cod', 'cheque', '' ) ) ) {
return;
}
// "Processing" updated status for paid Orders with all others payment methods
else {
if( $order->has_status('on-hold') )
$order->update_status( 'processing' );
}
}
代码进入您的活动子主题(或活动主题)的 function.php 文件。它应该可以工作。
只想指出:
@LoicTheAztec 提到的解决方案有效:
add_action('woocommerce_new_order', 'new_order_on_hold_notification', 30, 1 );
function new_order_on_hold_notification( $order_id ) {
$order = wc_get_order( $order_id );
// Only for on hold new orders
if( ! $order->has_status('on-hold') )
return; // Exit
// Send Customer On-Hold Order notification
WC()->mailer()->get_emails()['WC_Email_Customer_On_Hold_Order']->trigger( $order_id );
}
但是此解决方案存在问题,在调用 woocommerce_new_order
挂钩时订单尚未完全创建,因此在电子邮件通知中未显示订单项目。请改用以下挂钩:
add_action('woocommerce_checkout_order_processed', 'new_order_on_hold_notification');
function new_order_on_hold_notification( $order_id ) {
$order = wc_get_order( $order_id );
// Only for on hold new orders
if( ! $order->has_status('on-hold') )
return; // Exit
// Send Customer On-Hold Order notification
WC()->mailer()->get_emails()['WC_Email_Customer_On_Hold_Order']->trigger( $order_id );
}
在调用 woocommerce_checkout_order_processed
时,您的电子邮件中已经提供了订单商品。