要在WordPress中限制以特定郵箱后綴(例如@gmail.com)進(jìn)行用戶注冊,可以通過添加自定義代碼到您的主題的 functions.php 文件或?qū)⒋a封裝成插件來實(shí)現(xiàn)這一功能。下面提供了白名單和黑名單的示例代碼,用于檢查用戶注冊時使用的郵箱后綴,并在匹配到指定后綴時阻止或允許注冊。

WordPress 如何限制特定郵箱后綴的用戶注冊(注冊郵箱白名單/黑名單)

實(shí)現(xiàn)代碼

我們先提供下實(shí)現(xiàn)的代碼,氛圍白名單黑名單兩種模式,按需選擇其中一種即可

白名單模式代碼

/**
 * Plugin Name: WordPress 注冊郵箱白名單
 * Plugin URI: http://www.air-home.cn/
 * Author: WPCOM
 * Version: 1.0
 * Author URI: http://www.air-home.cn/
 */

add_filter('registration_errors', function($errors, $login, $email){
    /**
     * 允許注冊的郵箱后綴域名,可在數(shù)組里面自定義添加
     * 英文逗號分隔,引號也是英文輸入狀態(tài)輸入,域名字母小寫
     */
    $valid_domains = ['gmail.com', 'qq.com'];
    $email_domain = strtolower(substr(strrchr($email, "@"), 1));

    // 郵箱域名不在白名單列表
    if (!in_array($email_domain, $valid_domains)){
        // 提示語可自定義替換
        $msg = '本站只支持 Gmail和QQ郵箱注冊。';
        $errors->add('domain_whitelist_error', $msg);
    }

    return $errors;
}, 10, 3);

黑名單模式代碼

/**
 * Plugin Name: WordPress 注冊郵箱黑名單
 * Plugin URI: http://www.air-home.cn/
 * Author: WPCOM
 * Version: 1.0
 * Author URI: http://www.air-home.cn/
 */

add_filter('registration_errors', function($errors, $login, $email) {
    /**
     * 不允許注冊的郵箱后綴域名,可在數(shù)組里面自定義添加
     * 英文逗號分隔,引號也是英文輸入狀態(tài)輸入,域名字母小寫
     */
    $restricted_domains = ['gmail.com', 'qq.com'];
    $email_domain = strtolower(substr(strrchr($email, "@"), 1));

    // 郵箱域名在黑名單列表
    if (in_array($email_domain, $restricted_domains)){
        // 提示語可自定義替換
        $msg = '當(dāng)前域名后綴郵箱不允許注冊。';
        $errors->add('domain_blacklist_error', $msg);
    }

    return $errors;
}, 10, 3);

代碼部署

代碼部署可選擇在主題的functions.php 文件最后面插入,也可以新建一個php文件直接復(fù)制進(jìn)入上傳到插件目錄。

封裝成插件部署(推薦)

  1. 保存為PHP文件:新建一個PHP文件,可使用代碼編輯類軟件(例如Visual Studio Code、Sublime Text)或者寶塔面板文件管理器的新建文件,保存為.php后綴文件,這里我們命名為email-domain-check.php;
  2. 添加代碼:由于上面的示例代碼僅為功能的核心代碼,而PHP語法代碼是以<?php開頭的,所以需要在上面新建的文件第一行添加代碼:<?php,然后從第二行開始把上面的代碼復(fù)制進(jìn)文件,最后替換代碼里面的郵箱域名以及提示信息等并保存文件;
  3. 上傳到插件目錄:上傳到服務(wù)器網(wǎng)站插件目錄,一般是網(wǎng)站目錄下的/wp-content/plugins目錄,保存后的完整路徑:/wp-content/plugins/email-domain-check.php
  4. 啟用插件:進(jìn)入網(wǎng)站后臺插件啟用安裝的插件,插件名稱為WordPress 注冊郵箱白名單或者WordPress 注冊郵箱黑名單;

部署到主題functions.php文件

  1. 訪問您的WordPress網(wǎng)站文件:使用FTP客戶端或通過您的網(wǎng)站控制面板(例如寶塔)的文件管理器訪問您的WordPress站點(diǎn)文件;

  2. 編輯 functions.php 文件:找到您當(dāng)前主題的 functions.php 文件。這通常位于 /wp-content/themes/your-theme-name/ 目錄下,建議使用子主題來進(jìn)行更改,以避免將來更新主題時丟失自定義代碼:如何自定義修改主題而不被新版本覆蓋?子主題創(chuàng)建教程;

  3. 添加自定義代碼:在 functions.php 文件的末尾添加代碼,并按自己需求修改代碼中的郵箱后綴列表,然后保存文件。

通過上述步驟就可以在WordPress網(wǎng)站上對特定后綴的郵箱地址進(jìn)行白名單或者黑名單的限制注冊了。