如何禁用虚拟及可下载产品的订单已收到邮件,仅发完成邮件
解决WooCommerce虚拟/可下载订单重复发送邮件问题
你的代码会在用户完成结账后自动将全虚拟/可下载产品的订单标记为已完成,但WooCommerce默认会在订单创建时发送「订单已收到」邮件,之后订单状态改为完成时又发送「订单完成」邮件,导致用户收到两封邮件。
可以通过添加邮件过滤器,针对全虚拟/可下载订单禁用「订单已收到」邮件的发送:
// 禁用全虚拟/可下载订单的"订单已收到"邮件 add_filter( 'woocommerce_email_enabled_new_order', 'disable_new_order_email_for_virtual_downloadable', 10, 2 ); function disable_new_order_email_for_virtual_downloadable( $enabled, $order ) { if ( ! $order ) return $enabled; $only_virtual_downloadable = true; foreach ( $order->get_items() as $item ) { $product = wc_get_product( $item->get_product_id() ); if ( ! $product->is_virtual() && ! $product->is_downloadable() ) { $only_virtual_downloadable = false; break; } } // 仅当订单全为虚拟/可下载产品时,禁用"订单已收到"邮件 if ( $only_virtual_downloadable ) { $enabled = false; } return $enabled; }
将这段代码添加到你的主题functions.php文件或自定义插件中,与你现有的自动完成订单代码配合使用即可。这样符合条件的订单只会发送「订单完成」邮件,不会触发「订单已收到」邮件。
内容的提问来源于stack exchange,提问作者Acephalia
相关产品推荐
相关产品推荐

