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

WordPress+WooCommerce新用户注册邮件优化:仅保留可自定义WC邮件

问题描述

我使用Essential Addons插件的自定义注册表单配置网站用户注册后的通知邮件,最初仅收到WordPress标准注册邮件,无法收到WooCommerce的注册通知邮件。添加了一段代码后,现在能正常接收WooCommerce的注册邮件,但WordPress的默认注册邮件仍会同时发送。我希望仅保留可通过WooCommerce自定义的注册邮件,彻底移除WordPress的默认注册邮件。

当前使用的代码:

function send_welcome_email_to_new_user($user_id) {
    $wc = new WC_Emails();
    $wc->customer_new_account($user_id);
}
add_action('user_register', 'send_welcome_email_to_new_user');

补充说明:

  • 截图1:展示WordPress默认注册邮件的内容样式
  • 截图2:展示WooCommerce注册邮件的自定义设置界面
解决方案

要实现只保留WooCommerce注册邮件的需求,只需移除WordPress默认注册邮件的发送钩子即可。WordPress默认通过wp_new_user_notification函数发送注册邮件,该函数挂钩在user_register动作上,我们可以直接移除这个钩子,或者在发送WooCommerce邮件的同时禁用默认邮件发送。

方案1:直接移除默认邮件钩子

在现有代码后添加移除钩子的代码:

// 发送WooCommerce注册邮件
function send_welcome_email_to_new_user($user_id) {
    $wc = new WC_Emails();
    $wc->customer_new_account($user_id);
}
add_action('user_register', 'send_welcome_email_to_new_user');

// 移除WordPress默认注册邮件发送动作
remove_action('user_register', 'wp_new_user_notification');

方案2:合并逻辑(更简洁)

将发送WooCommerce邮件和禁用默认邮件的逻辑合并到一个函数中,通过调整钩子优先级确保先执行我们的逻辑:

function send_wc_welcome_email_disable_default($user_id) {
    // 触发WooCommerce注册邮件发送
    $wc = new WC_Emails();
    $wc->customer_new_account($user_id);
    
    // 移除WordPress默认注册邮件的发送钩子
    remove_action('user_register', 'wp_new_user_notification', 10);
}
// 设置更高优先级(数值越小优先级越高),确保在默认邮件发送前执行
add_action('user_register', 'send_wc_welcome_email_disable_default', 5);

注意事项

  • 将代码添加到主题的functions.php文件中,或者使用自定义代码插件(如Code Snippets)添加,避免主题更新时代码丢失。
  • 测试注册流程,确认仅收到WooCommerce的注册邮件,WordPress默认邮件不再发送。

内容的提问来源于stack exchange,提问作者Artur Pylypenko

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 00:05:23