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

如何将WooCommerce注册、账单页邮箱字段设置为非必填项

WooCommerce 邮箱字段设为非必填解决方案

你之前尝试的代码存在两个核心问题:1. 使用的钩子woocommerce_register_form不匹配字段修改场景,2. 代码中用到的$key、$registration_fields变量未提前定义,无法生效。同时仅修改前端required属性不够,WooCommerce后端默认仍会校验邮箱必填,需要同步取消后端校验规则。

以下代码添加到你当前主题的functions.php文件或自定义功能插件中即可生效,同时覆盖注册页、账单地址页两个场景的前端属性修改+后端校验取消:

// 1. 修改注册页邮箱字段为非必填
add_filter( 'woocommerce_register_fields', 'wc_remove_email_required', 999 );
function wc_remove_email_required( $fields ) {
    $fields['account']['account_email']['required'] = false;
    return $fields;
}

// 2. 取消注册页后端邮箱必填校验
add_filter( 'woocommerce_registration_errors', 'wc_remove_email_required_validation', 999, 3 );
function wc_remove_email_required_validation( $errors, $username, $email ) {
    if ( isset( $errors->errors['empty_email'] ) ) {
        unset( $errors->errors['empty_email'] );
    }
    return $errors;
}

// 3. 修改账单地址页邮箱字段为非必填
add_filter( 'woocommerce_billing_fields', 'wc_remove_billing_email_required', 999 );
function wc_remove_billing_email_required( $fields ) {
    $fields['billing_email']['required'] = false;
    return $fields;
}

// 4. 取消账单地址提交时后端邮箱必填校验
add_filter( 'woocommerce_process_checkout_errors', 'wc_remove_billing_email_validation', 999 );
function wc_remove_billing_email_validation( $errors ) {
    if ( isset( $errors->errors['billing_email_required'] ) ) {
        unset( $errors->errors['billing_email_required'] );
    }
    return $errors;
}

注意事项

  • 若你站点有自定义的注册/结账模板,需要检查模板中是否硬写了required属性,若有手动删除即可
  • 你已搭建SMS发送密码、到店核验身份的机制,无需担心无邮箱导致的账号通知、身份校验问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 12:06:04