You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WooCommerce 2.6.14:钱包充值生成订单邮件致用户困惑求解决

解决WooCommerce 2.6.14钱包充值生成订单并发送邮件的问题

我明白你的困扰——用户把钱包充值当成真实订单,确实会造成不必要的误解。针对WooCommerce 2.6.14这个版本,我们可以通过代码拦截默认订单邮件,甚至替换成更清晰的充值通知,具体方案如下:

核心思路

先识别出哪些订单是「充值订单」,然后禁用这类订单的默认邮件通知(发给用户和管理员的都要禁),如果需要的话,再发送自定义的充值成功提醒。

具体代码实现

把下面的代码添加到你的主题functions.php文件里(或者自定义插件中,避免主题更新丢失代码):

1. 识别充值订单

定义一个函数判断当前订单是否为充值订单,这里假设你用特定产品作为充值入口(比如产品ID是123),你可以根据实际情况调整判断逻辑:

// 判断是否为充值订单
function is_recharge_order( $order_id ) {
    $order = wc_get_order( $order_id );
    if ( ! $order ) return false;
    
    // 遍历订单商品,检查是否包含充值产品(替换123为你的充值产品ID)
    foreach ( $order->get_items() as $item ) {
        // WooCommerce 2.6版本中获取产品ID的方式
        if ( $item['product_id'] == 123 ) {
            return true;
        }
    }
    
    // 如果你的充值是通过自定义表单发起的,也可以用自定义元数据判断:
    // return $order->get_meta( '_is_recharge', true ) == 'yes';
    return false;
}

2. 禁用充值订单的默认邮件

通过过滤器禁用管理员的新订单邮件,以及用户的订单确认邮件:

// 禁用管理员的充值订单通知邮件
function disable_recharge_admin_email( $enabled, $order ) {
    if ( is_recharge_order( $order->get_id() ) ) {
        return false;
    }
    return $enabled;
}
add_filter( 'woocommerce_email_enabled_new_order', 'disable_recharge_admin_email', 10, 2 );

// 禁用用户的充值订单确认邮件(包含处理中、待付款等状态)
function disable_recharge_customer_email( $enabled, $order ) {
    if ( is_recharge_order( $order->get_id() ) ) {
        return false;
    }
    return $enabled;
}
add_filter( 'woocommerce_email_enabled_customer_on_hold_order', 'disable_recharge_customer_email', 10, 2 );
add_filter( 'woocommerce_email_enabled_customer_processing_order', 'disable_recharge_customer_email', 10, 2 );

3. 可选:发送自定义充值成功邮件

如果你想给用户发送更清晰的充值提醒,可以添加这个函数:

// 发送自定义充值成功邮件
function send_recharge_success_email( $order_id ) {
    if ( ! is_recharge_order( $order_id ) ) return;
    
    $order = wc_get_order( $order_id );
    $customer_email = $order->get_billing_email();
    $recharge_amount = $order->get_total();
    
    // 自定义邮件内容,你可以根据需求修改
    $subject = '您的钱包充值已完成';
    $message = "您好,\n\n您的钱包充值操作已成功完成,充值金额为:" . wc_price( $recharge_amount ) . "\n\n您可以登录账户中心查看更新后的钱包余额。\n\n感谢您的支持!";
    
    // 发送邮件
    wp_mail( $customer_email, $subject, $message );
}
add_action( 'woocommerce_order_status_completed', 'send_recharge_success_email', 10, 1 );

注意事项

  • 记得把代码中的123替换成你实际的充值产品ID,如果是用自定义字段标记订单,就调整is_recharge_order里的判断逻辑。
  • 测试时建议用小额充值测试,确保默认邮件不会发送,自定义邮件能正常收到。
  • WooCommerce 2.6.14版本较老,部分函数和新版有差异,代码已经适配了这个版本的调用方式。

内容的提问来源于stack exchange,提问作者Chanchal Kumari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:51:29