给woocommerce添加注册邮箱白名单 纯代码实现

使用方法:放到主题 functions.php 或代码片段插件

中文版的 :

function hs_allowed_email_domains() {
    return [
        // 国内
        'qq.com','vip.qq.com','foxmail.com','163.com','126.com','yeah.net','188.com',
        'vip.163.com','vip.126.com','sina.com','sina.cn','sohu.com','139.com','189.cn',
        'wo.cn','aliyun.com','tom.com','21cn.com',
        // 国外
        'gmail.com','googlemail.com','outlook.com','hotmail.com','live.com','msn.com',
        'yahoo.com','ymail.com','icloud.com','me.com','mac.com','aol.com',
        'proton.me','protonmail.com','zoho.com','yandex.com','mail.ru','gmx.com','gmx.net','fastmail.com',
    ];
}

function hs_email_allowed($email) {
    $domain = strtolower(substr(strrchr($email, '@'), 1));
    return in_array($domain, hs_allowed_email_domains(), true);
}

// 1. 我的账户页注册
add_filter('woocommerce_registration_errors', function($errors, $username, $email) {
    if (!hs_email_allowed($email)) {
        $errors->add('email_domain', '请使用主流邮箱注册(如 QQ、163、Gmail、Outlook 等)。');
    }
    return $errors;
}, 10, 3);

// 2. 结账时创建账户(访客结账不受限,只拦要注册账户的)
add_action('woocommerce_after_checkout_validation', function($data, $errors) {
    $creating = !is_user_logged_in() && (!empty($data['createaccount']) || get_option('woocommerce_enable_guest_checkout') !== 'yes');
    if ($creating && !empty($data['billing_email']) && !hs_email_allowed($data['billing_email'])) {
        $errors->add('email_domain', '请使用主流邮箱注册(如 QQ、163、Gmail、Outlook 等)。');
    }
}, 10, 2);

英文版的:

function hs_allowed_email_domains() {
    return [
        // China
        'qq.com','vip.qq.com','foxmail.com','163.com','126.com','yeah.net','188.com',
        'vip.163.com','vip.126.com','sina.com','sina.cn','sohu.com','139.com','189.cn',
        'wo.cn','aliyun.com','tom.com','21cn.com',
        // International
        'gmail.com','googlemail.com','outlook.com','hotmail.com','live.com','msn.com',
        'yahoo.com','ymail.com','icloud.com','me.com','mac.com','aol.com',
        'proton.me','protonmail.com','zoho.com','yandex.com','mail.ru','gmx.com','gmx.net','fastmail.com',
    ];
}

function hs_email_allowed($email) {
    $domain = strtolower(substr(strrchr($email, '@'), 1));
    return in_array($domain, hs_allowed_email_domains(), true);
}

function hs_email_error_message() {
    return __('Please use a mainstream email provider to register (e.g. Gmail, Outlook, Yahoo, iCloud, QQ, 163). Temporary or disposable email addresses are not allowed.', 'hs-email-whitelist');
}

// 1. My Account page registration
add_filter('woocommerce_registration_errors', function($errors, $username, $email) {
    if (!hs_email_allowed($email)) {
        $errors->add('email_domain', hs_email_error_message());
    }
    return $errors;
}, 10, 3);

// 2. Account creation at checkout (guest checkout is not restricted)
add_action('woocommerce_after_checkout_validation', function($data, $errors) {
    $creating = !is_user_logged_in() && (!empty($data['createaccount']) || get_option('woocommerce_enable_guest_checkout') !== 'yes');
    if ($creating && !empty($data['billing_email']) && !hs_email_allowed($data['billing_email'])) {
        $errors->add('email_domain', hs_email_error_message());
    }
}, 10, 2);

 

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA打赏
共{{data.count}}人
人已打赏
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
❯
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索