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
相关产品推荐
相关产品推荐

