如何针对WooCommerce中Przelewy24支付的待付款订单发送邮件通知
解决WooCommerce中Przelewy24支付网关pending payment状态下发送订单确认邮件的问题
你可以通过添加自定义PHP代码,强制WooCommerce在Przelewy24支付的订单处于pending payment状态时发送订单确认邮件,无需修改订单状态。
实现代码
将以下代码添加到你的WordPress子主题functions.php文件中,或者使用自定义功能插件:
/** * 针对Przelewy24支付的pending订单发送确认邮件 */ add_action( 'woocommerce_order_status_pending', 'send_p24_pending_order_confirmation', 10, 1 ); function send_p24_pending_order_confirmation( $order_id ) { // 获取订单对象 $order = wc_get_order( $order_id ); if ( ! $order ) return; // 验证支付方式是否为Przelewy24(请根据实际网关ID调整) $payment_method = $order->get_payment_method(); if ( 'przelewy24' !== $payment_method ) { return; } // 调用WooCommerce内置邮件发送功能 $mailer = WC()->mailer(); $new_order_email = $mailer->get_emails()['WC_Email_Customer_New_Order']; // 设置邮件参数并发送 $new_order_email->object = $order; $new_order_email->recipient = $order->get_billing_email(); $new_order_email->send( $new_order_email->recipient, $new_order_email->get_subject(), $new_order_email->get_content(), $new_order_email->get_headers(), $new_order_email->get_attachments() ); }
关键注意事项
- 确认网关ID:代码中
'przelewy24'是Przelewy24网关的默认ID,如果你的网关ID不同(可在WooCommerce支付设置页面查看,或订单编辑页的支付方式元数据中获取),请替换为实际ID。 - 避免代码丢失:不要直接修改父主题的
functions.php,使用子主题或自定义插件存放代码,防止主题更新时代码被覆盖。 - 测试验证:创建测试订单选择Przelewy24支付,检查
pending payment状态下是否收到邮件;支付成功后,WooCommerce会正常发送后续状态的邮件,不会重复发送确认邮件。
内容的提问来源于stack exchange,提问作者mwlandof
相关产品推荐
相关产品推荐

