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

WooCommerce指定支付方式弃单后发送WC_Email_Customer_On_Hold_Order邮件咨询

WooCommerce 触发指定邮件功能实现方案

代码放置位置

你可以选择以下任意一个安全的位置存放自定义代码:

  • 当前使用的WordPress子主题的functions.php文件末尾,注意不要直接修改父主题的文件,避免主题更新后自定义代码被覆盖
  • 自行创建的自定义功能插件的主PHP文件中

功能实现代码

以下代码逻辑为监听「待支付订单转为取消」的状态变更事件(对应用户放弃订单场景),判断订单支付方式为指定方式A时触发WC_Email_Customer_On_Hold_Order类型邮件:

add_action( 'woocommerce_order_status_pending_to_cancelled', 'send_on_hold_mail_for_abandoned_payment_a', 10, 2 );
function send_on_hold_mail_for_abandoned_payment_a( $order_id, $order ) {
    // 请将下方值替换为支付方式A的真实slug标识
    $target_payment_slug = 'a_payment_gateway';
    
    // 非目标支付方式直接跳出
    if ( $order->get_payment_method() !== $target_payment_slug ) {
        return;
    }
    
    // 获取WooCommerce邮件实例并触发发送
    $mail_instances = WC()->mailer()->get_emails();
    if ( isset( $mail_instances['WC_Email_Customer_On_Hold_Order'] ) ) {
        $mail_instances['WC_Email_Customer_On_Hold_Order']->trigger( $order_id );
    }
}

验证调整提示

  • 你可以在WooCommerce后台「设置」-「支付」页面,点击对应支付方式A的管理按钮,地址栏中section=后面的值就是该支付方式的slug,替换到代码对应位置即可
  • 如果你的「放弃订单」对应其他状态转换,可将钩子名woocommerce_order_status_pending_to_cancelled中的状态段替换为对应的值,比如待保留订单转为取消就改为woocommerce_order_status_on-hold_to_cancelled
  • 建议先在测试环境验证订单状态转换和邮件发送逻辑,确认无问题后再部署到生产环境

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 08:45:01