WooCommerce:购物车含指定商品时仅向管理员发送通知邮件
实现特定商品下单时仅通知管理员的代码片段
针对你需求的场景,以下是基于WooCommerce的代码实现方案(假设你使用的是WooCommerce电商系统):
核心逻辑
通过挂钩WooCommerce的客户订单邮件收件人过滤钩子,检查订单中是否包含指定ID的商品。如果存在,则清空客户邮件的收件人,仅保留管理员的订单通知。
代码片段
// 定义需要特殊处理的商品ID $target_product_id = 123; // 替换为你的目标商品ID // 过滤客户订单邮件收件人 add_filter('woocommerce_email_recipient_customer_on_hold_order', 'disable_customer_email_for_specific_product', 10, 2); add_filter('woocommerce_email_recipient_customer_completed_order', 'disable_customer_email_for_specific_product', 10, 2); add_filter('woocommerce_email_recipient_customer_processing_order', 'disable_customer_email_for_specific_product', 10, 2); function disable_customer_email_for_specific_product($recipient, $order) { global $target_product_id; // 如果订单对象不存在,返回原收件人 if (!is_a($order, 'WC_Order')) { return $recipient; } // 遍历订单中的所有商品 foreach ($order->get_items() as $item) { $product_id = $item->get_product_id(); // 检查是否包含目标商品ID if ($product_id == $target_product_id) { // 清空收件人,不向客户发送邮件 return ''; } } // 没有目标商品,返回原收件人 return $recipient; }
使用说明
- 将代码中的
123替换为你需要特殊处理的商品ID - 将代码添加到你的WordPress主题的
functions.php文件中,或者自定义插件里 - 测试下单流程:当购物车包含目标商品时,客户不会收到订单通知邮件,管理员仍会正常收到新订单通知
注意事项
- 该代码仅针对WooCommerce默认的客户订单邮件(待付款、处理中、已完成),如果有自定义的客户邮件模板,需要额外添加对应的过滤钩子
- 修改主题文件前建议先备份,避免操作失误导致网站异常
内容的提问来源于stack exchange,提问作者20.miles
相关产品推荐
相关产品推荐

