WordPress 会員登録時にユーザー名/メール制限する

Last Updated: 2023 年 07 月 16 日 댓글

WordPress サイトで会員登録すると、ユーザ名(ユーザ名)に特定の単語を使用しないように制限したい場合があります。

これらの機能を提供する WordPress プラグインで Restrict User Registrationが、更新がないされてから3年が過ぎたため、なるべく使用しないことが望ましいと思われる。

会員登録時にユーザー名に特定の単語が含まれる場合、エラーを表示する

別の方法として一般的なサイト(シングルサイト)の場合、次のコードを使用しているテーマの関数ファイルに追加することができます。

add_filter( 'registration_errors', function( $errors, $name )
{
if ( user_name_is_forbidden( $name ) )
$errors->add('user_name', __( '허용되지 않는 ユーザー 이름입니다.' ) );
return $errors;
}, 10, 2);

function user_name_is_forbidden( $name )
{
// If you need the character '~', write it as '\~'.
$forbidden = array(
'admin.*',
'facebook.*',
'wordpress.*'
);

return (bool) preg_match( '~' . join( '|', $forbidden ) . '~i', $name );
}
// 출처: Filter username field on registration for profanity and unwanted words (회원 가입 시 ユーザー 이름 필드에 원친 않는 단어를 사용하지 못하도록 필터링하기)

同様に、上記のコードは、チャイルドテーマの関数ファイル(functions.php)に追加する必要が今後のテーマが更新されても、変更が消えません。

上記のコードを追加した場合、admin、facebook、 wordpress 単語がユーザー名に含まれる場合、警告メッセージを出力し、登録されていません。

WordPress 会員登録時にユーザー名を制限する

ちなみに、管理者IDでadmin、administratorなどを使用することは、セキュリティ上のリスクがあります。 管理者IDがadminやadministratorの場合、次の記事を参考に、管理者IDを変更することをお勧め。

マルチサイトの場合、次のコードを使用することができます。

add_filter( 'wpmu_validate_user_signup', function( $result )
{
// there is already an error
if ( $result['errors']->get_error_message('user_name') )
return $result;

if ( user_name_is_forbidden( $result['user_name'] ) )
$result['errors']->add('user_name', __( '허용되지 않는 ユーザー 이름입니다.' ) );

return $result;
});

function user_name_is_forbidden( $name )
{
// 상기와 동일
);

マルチサイトではうまく機能していることを確認してみました。

WordPress 会員登録時に、特定の電子メールドメインが含まれる場合、エラーを表示する

会員登録時のメールフィールドに特定のドメインが含まれる場合会員に登録することを制限したい場合があります。 この場合、次のコードを使用することができます。

function disable_email_domain ( $errors, $sanitized_user_login, $user_email ) {
list( $email_user, $email_domain ) = explode( '@', $user_email );
$forbidden_emails = array("hotmail.com", "example.com");
if (in_array($email_domain, $forbidden_emails)) {
$errors->add( 'email_error', __( '<strong>오류</strong>: 허용되지 않은 도메인입니다.', 'my_domain' ) );
}
return $errors;
}
add_filter( 'registration_errors', 'disable_email_domain', 10, 3 );

上記のコードは、 Disallow registrations from specific email domains(特定の電子メールドメインの登録を許可していない)文を参照して、少し変形したものです。

電子メールドメインに登録制限する

hotmail.comスパム会員(ボット)が多く、自動登録されているのを目撃したことがあります。 hotmail.comやワンタイムメールサービスを使用して作成されたドメインをブロックすると、スパムの加入者を多く減らすことができるようになります。

特定のドメインのメールアドレスのみを許可したい場合は、次記事を参照してください。


コメントを残す

コメント