You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在WooCommerce中自动将on-hold订单转为processing并仅发送对应通知

WooCommerce 自动修改on-hold订单为processing状态解决方案

根因说明

原有代码挂载的woocommerce_thankyou钩子执行时机晚于WooCommerce默认的订单状态邮件触发逻辑,系统完成on-hold邮件发送后才会执行状态修改操作,因此会出现两类邮件同时发送的问题。

优化后代码

直接替换原有代码,添加到主题functions.php文件或自定义功能插件中即可生效:

add_action( 'woocommerce_order_status_on-hold', 'custom_auto_process_onhold_order', 10, 2 );
function custom_auto_process_onhold_order( $order_id, $order ) {
    // 移除默认的on-hold状态邮件发送动作
    remove_action( 'woocommerce_order_status_on-hold_notification', [ WC()->mailer(), 'send_on_hold_order_notification' ], 10 );
    
    // 更新订单状态为processing,可自定义备注内容
    $order->update_status( 'processing', '系统自动将待确认订单转为处理中' );
    
    // 手动触发processing状态邮件通知,兼容自定义邮件场景
    do_action( 'woocommerce_order_status_processing_notification', $order_id );
}

逻辑说明

  • 改用woocommerce_order_status_on-hold钩子,会在订单进入on-hold状态的瞬间触发,执行时机早于邮件发送逻辑
  • 先移除WooCommerce默认绑定的on-hold邮件发送动作,从根源上避免on-hold邮件发出
  • update_status方法本身会自动触发processing状态对应的邮件通知,额外添加的do_action代码用于兼容部分自定义邮件规则场景,确保邮件必发

注意事项

测试时建议使用小额测试订单验证状态变更和邮件发送逻辑,避免影响正常业务。

内容的提问来源于stack exchange,提问作者user13900862

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 21:15:00