WordPressで、特定の電子メールドメインの登録を制限する/許可する

例えばyahoo.comやnaver.comなどの特定の電子メールドメインに登録されていないように制限したい場合があります。 あるいはその逆に、特定の電子メールの種類のみ登録が可能なように許可したい場合もあるでしょう。 この場合に、以下の方法を使用することができます。

Restrict User Registrationプラグイン

まず、特定のユーザー名(Username)やEメールまたは電子メールドメインの登録を制限する場合に Restrict User Registrationというプラグインを使用することができます。

WordPress ユーザー登録制限

このプラグインは、更新がないされてから1年が過ぎたがインストールしてテストしてみるとうまく動作します。

プラグインをインストールした後、 WordPress 管理者ページの左側のメニューから ユーザー> Restrict Registration(登録制限)をクリックして登録を制限する ユーザー/メール/メールドメイン(メールサービスプロバイダ)を登録することができます。

ユーザー登録制限

複数の項目を追加するには、コンマで区切って入力するか、下の 「+追加」をクリックして、一つずつ入力して追加します。 エラーメッセージ(Error message)も適切に指定するようにします。

CM E-Mail Registration Blacklistプラグイン - 特定の電子メールドメインのメンバー登録を許可/メンバー登録をブロックする

特定の電子メールドメインに参加を許可またはブロック

CM E-Mail Registration Blacklist プラグインを使用すると、不要なユーザー(メールフィルタリング)が登録されないようにすることができます。

例えば、このプラグインを使用して、特定の電子メールサービスプロバイダ(gmail.com、naver.comなど)のみ登録されるように設定できます。 ただし、無料版を使用してからなのか Powered by CreativeMinds WordPress Plugins 電子メールブラックリストというフレーズが会員登録ページに表示されます。

WordPress 会員登録を制限する

このプラグインは、頻繁に更新がされているようです。 テストの結果うまく動作することを確認することができました。

コードを使用して、特定のメールだけを登録可能にする

プラグインの使用方法を好まない場合は、コードを使用して特定の電子メールドメインのみを登録できるようにすることができます。 次のコードを使用しているテーマの関数ファイルに追加します。 (もちろんチャイルドテーマを使うようにします。」ワンクリックで簡単にチャイルドテーマを作成する記事を参照してください。チャイルドテーマ(子テーマ、サブテーマ)を作成せずにコードを入れる場合は、後でテーマを更新するとすべての変更が消えます。)

add_action('registration_errors', 'sizeable_restrict_domains', 10, 3);
function sizeable_restrict_domains( $errors, $login, $email ) {
$whitelist = array(
'domain.com',
'website.com'
);
if ( is_email($email) ) {
$parts = explode('@', $email);
$domain = $parts[count($parts)-1];
$to = 'your@adminemail.com';
$subject = '이메일 제목';
$message = '다음 이메일 주소로 회원가입을 시도했습니다: ' . $email;
if ( !in_array(strtolower($domain), $whitelist) ) {
$errors->add('email_domain', __('오류: 승인된 이메일 주소만 등록할 수 있습니다.'));
wp_mail( $to, $subject, $message );
}
}
return $errors;
}
// 출처: codehub.eu

上記のコードを使用して会員登録が許可されている電子メールのリストを登録することができます。

次のようなコードでも試してみます。

function is_valid_email_domain($login, $email, $errors ){
$valid_email_domains = array("gmail.com","yahoo.com");// 회원가입을 허용할 이메일 도메인 목록
$valid = false;
foreach( $valid_email_domains as $d ){
$d_length = strlen( $d );
$current_email_domain = strtolower( substr( $email, -($d_length), $d_length));
if( $current_email_domain == strtolower($d) ){
$valid = true;
break;
}
}
// if invalid, return error message, 허용된 이메일 도메인이 아닌 이메일 주소를 사용할 경우 오류 메시지 출력하기
if( $valid === false ){
$errors->add('domain_whitelist_error',__( '<strong>오류</strong>: @gmail.com 또는 @yahoo.com 이메일만 사용하여 회원가입할 수 있습니다.' ));
}
}
add_action('register_post', 'is_valid_email_domain',10,3 );
// 출처: eyeswift.com

上記のコードは、テストをしてみました。 テストをして見てもいるかどうかを教えていただければ記事を更新するようにします。

別の方法で会員登録時に必要な電子メールアドレスが含まれている検証(Validation)をする方法もあります。

jQuery(document).ready(function($) {
$('#registerform').find(':submit').click(function(e) {
if( ! isGmail( $('#user_email').val() ) ) {
e.preventDefault(); // Prevent the form from submitting, 회원가입 양식 제출 금지하기
alert('지메일 주소만 회원 가입에 사용할 수 있습니다!');
return false;
}
});
});

function isGmail( address ) {
return address.indexOf("@gmail.com", this.length - 10) !== -1;
}
// 출처: http://wordpress.stackexchange.com

テストはみなかったが、特に問題なく動作するようです。 コードを使用した方法がうまくいかない場合は、上で紹介し、プラグインを使用してください。

一部の記事にはアフィリエイトリンクが含まれている場合があり、パートナーの活動で一定額の手数料を受け取ることがあります。

コメントを残す

*電子メール情報は公開されません。