如何仅在订单状态为processing或partially_paid时发送WooCommerce新订单邮件
解决WooCommerce新增partially_paid状态触发管理员新订单邮件的问题
直接用下面的代码替换你之前的尝试,放到主题的functions.php文件或者自定义功能插件里:
// 移除默认的仅processing状态触发新订单邮件的动作 remove_action( 'woocommerce_order_status_processing_notification', array( WC()->mailer()->get_emails()['WC_Email_New_Order'], 'trigger' ) ); // 添加自定义触发逻辑:processing和partially_paid状态都触发邮件 add_action( 'woocommerce_order_status_processing', 'trigger_admin_new_order_email_on_selected_statuses', 10, 1 ); add_action( 'woocommerce_order_status_partially_paid', 'trigger_admin_new_order_email_on_selected_statuses', 10, 1 ); function trigger_admin_new_order_email_on_selected_statuses( $order_id ) { // 获取新订单邮件实例 $new_order_email = WC()->mailer()->get_emails()['WC_Email_New_Order']; // 触发邮件发送 if ( $new_order_email ) { $new_order_email->trigger( $order_id ); } }
注意事项:
- 确认存款插件的订单状态钩子名称是否为
woocommerce_order_status_partially_paid,部分插件可能用woocommerce_order_status_partially-paid(横杠代替下划线),如果代码无效,尝试替换钩子名称 - 代码添加后,测试修改订单状态为processing或partially_paid,检查管理员邮箱是否收到邮件
- 不要直接修改核心文件,避免主题/插件更新后代码丢失
内容的提问来源于stack exchange,提问作者Thyregod
相关产品推荐
相关产品推荐

