求助:替换WooCommerce场景下的默认WordPress邮件通知
Woocommerce邮件通知样式不生效问题解决方案
排查与修复步骤
1. 验证Woocommerce邮件基础配置
- 进入
WooCommerce > 设置 > 邮件,点击对应场景(新用户注册、订单确认等)的「管理」按钮,确认启用选项已勾选,同时检查模板内容、发件人名称/邮箱是否和你配置的一致。 - 点击「发送测试邮件」,如果测试邮件仍为WordPress默认样式,说明配置未生效;若测试邮件正常,问题出在场景触发逻辑。
2. 排查插件冲突
- 暂时禁用除WooCommerce、WP Mail SMTP外的所有插件,测试用户注册/找回密码/下单场景,看邮件样式是否恢复。
- 若恢复正常,逐个重新启用插件,定位到冲突插件后,选择更新插件或更换替代工具。
3. 检查主题对邮件模板的覆盖
- 查看当前主题目录下是否存在
woocommerce/emails文件夹,若存在,说明主题自定义了邮件模板,可能覆盖了你在后台的配置。 - 临时切换到WordPress默认主题(如Twenty Twenty-Four)测试,若邮件样式正常,需删除主题中自定义的邮件模板文件,或修改主题模板适配你的配置。
4. 确认WP Mail SMTP设置
- 进入WP Mail SMTP的设置页面,检查是否有「强制使用插件邮件模板」类的选项,部分SMTP插件会强制替换邮件样式,需关闭该选项,或设置为优先使用Woocommerce模板。
5. 代码强制调用Woocommerce模板(可选)
如果以上步骤无效,可将以下代码添加到主题functions.php或使用代码片段插件:
// 让用户注册邮件使用Woocommerce配置模板 add_filter( 'wp_new_user_notification_email', 'force_woocommerce_new_user_email', 10, 3 ); function force_woocommerce_new_user_email( $wp_email, $user, $blogname ) { if ( class_exists( 'WC_Emails' ) ) { $wc_emails = WC_Emails::instance(); $wc_email = $wc_emails->get_email( 'customer_new_account' ); if ( $wc_email ) { $wp_email['subject'] = $wc_email->get_subject(); $wp_email['message'] = $wc_email->get_content(); $wp_email['headers'] = $wc_email->get_headers(); } } return $wp_email; } // 让找回密码邮件使用Woocommerce配置模板 add_filter( 'retrieve_password_message', 'force_woocommerce_reset_password_email', 10, 4 ); function force_woocommerce_reset_password_email( $message, $key, $user_login, $user_data ) { if ( class_exists( 'WC_Emails' ) ) { $wc_emails = WC_Emails::instance(); $wc_email = $wc_emails->get_email( 'customer_reset_password' ); if ( $wc_email ) { $reset_link = wc_get_endpoint_url( 'lost-password', $key, wc_get_page_permalink( 'myaccount' ) ); $message = str_replace( '{reset_url}', $reset_link, $wc_email->get_content() ); $message = str_replace( '{user_login}', $user_login, $message ); } } return $message; }
问题对比截图
- 当前收到的默认WordPress邮件:

- 预期的Woocommerce配置样式:

内容的提问来源于stack exchange,提问作者Patrick Dinty
相关产品推荐
相关产品推荐

