Lọc trường tên người dùng khi đăng ký thô tục và những từ không mong muốn


7

Làm cách nào để thêm bộ lọc vào trường tên người dùng để ngăn người dùng mới đăng ký bằng các từ không mong muốn như administratorthô tục?

Lý tưởng nhất là nếu tôi có thể thêm một danh sách lớn các từ bị chặn với tùy chọn thêm dấu hoa thị (*) dưới dạng ký tự đại diện genitals*.

Câu trả lời:


7

Có hai móc rất khác nhau mà bạn có thể sử dụng, tùy thuộc vào cài đặt:

  • wpmu_validate_user_signup cho nhiều trang web và
  • registration_errors cho trang web đơn.

Các mã chưa được kiểm tra sau đây cho thấy làm thế nào để sử dụng chúng. Bạn có thể điều chỉnh các mảng theo user_name_is_forbidden()nhu cầu của bạn. Sử dụng các biểu thức thông thường cho các trận đấu.

// 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 );
}

3
Chỉ cần cẩn thận những bộ lọc "từ xấu" bạn sử dụng. Một số người thích nấm "shitake". Hoặc là người hâm mộ của âm nhạc "cổ điển". Hoặc đến từ một nơi gọi là "scunthorpe".
Otto

6
@Otto Hoặc họ đến từ Essex. :)
fuxia

Thật là quỷ dữ! Công trình toscho tuyệt vời!
Christine Cooper

3
Christine, tôi thực sự tự hỏi bao nhiêu nền tảng toscho của bạn đã được xây dựng: D
kaiser

@Otto Một câu đố vui. Chúng tôi vừa mở đăng ký và một người dùng mới đã đăng ký với "ScatArt * ..." - Ngay khi chúng tôi nhấn nút cấm, chúng tôi đã lấy địa chỉ email của người dùng và có vẻ như đó là đăng ký chính hãng, không bị troll. Như thể !!
Christine Cooper
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.