新しいユーザーがadministrator
や一般の冒涜などの不要な単語を使用して登録するのを防ぐために、ユーザー名フィールドにフィルターを追加するにはどうすればよいですか。
理想的には、genitals*
のようにワイルドカードとしてアスタリスク(*)を追加するオプションでブロックされている単語の大きなリストを追加できれば。
インストールに応じて、使用できるフックが2つあります。
wpmu_validate_user_signup
、registration_errors
。次の untested codeはそれらの使い方を示しています。必要に応じてuser_name_is_forbidden()
内の配列を微調整できます。一致には正規表現を使用してください。
// multi-site
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', __( 'That username is not allowed.' ) );
return $result;
});
//single-site
add_filter( 'registration_errors', function( $errors, $name )
{
if ( user_name_is_forbidden( $name ) )
$errors->add('user_name', __( 'That username is not allowed.' ) );
return $errors;
}, 10, 2);
function user_name_is_forbidden( $name )
{
// If you need the character '~', write it as '\~'.
$forbidden = array(
'admin.*',
'genitals.*',
'system.*'
);
return (bool) preg_match( '~' . join( '|', $forbidden ) . '~i', $name );
}