Як заборонити реєструватися з певним словом в імені користувача WordPress?

Останнім часом часто активізуються боти які створюють фейкові акаунти користувачів WordPress, до того ж в логіні використовують спамні слова. Видаляти їх не важко, адже в них є характерна ознака в імені користувача, але вручну видаляти те, що автоматично робить спам-бот це «боротися з вітряком».  Тому логічно заборонити реєструватися з певним словом в логіні за допомогою коду. Саме  такий захист від спаму і застосуємо.

Захищаємо від спаму форму реєстрації на сайті WordPress

За реєстрацію в WordPress  відповідає файл wp-login.php й поле user_login. Тому саме в ньому потрібно додати фільтр який буде викликати помилку, якщо в це поле буде введено слово яке ми маркеруємо як спамне.

Цей хук дозволяє перехопити реєстрацію користувача та відхилити її:

// заборона слів в полі логін
function prevent_cyhorge_user( $user_login, $user_email, $errors ) {

    if ( strpos( $user_login, 'переказ' ) ) {
        $errors->add( 'username_error', __( '<strong>ERROR</strong>: You are not allowed to register.', 'your-theme-domain' ) );
    }
}
add_action( 'register_post', 'prevent_cyhorge_user', 10, 3 );

Додайте його в файл functions.php вашої активної теми. Не забудьте замінити слово «переказ» на ваш варіант, та зберегти зміни. Не лишнім буде нагадування про бекап сайту перед редакцією файлу functions.

Якщо потрібно заборонити більше ніж 1 слово, використайте цей код:

function restrict_username_registration( $errors, $sanitized_user_login, $user_email ) {
    // Масив заборонених слів
    $restricted_words = array(
        'admin',
        'administrator',
        'support',
        'moderator',
        // Додайте інші слова за потребою
    );

    // Перевіряємо кожне заборонене слово
    foreach ( $restricted_words as $word ) {
        if ( stripos( $sanitized_user_login, $word ) !== false ) {
            $errors->add( 'user_name', __( '<strong>ERROR</strong>: You are not allowed to register.', 'your-theme-domain' ) );
            break;
        }
    }

    return $errors;
}
add_filter( 'registration_errors', 'restrict_username_registration', 10, 3 );

Замінивши «admin», «administrator», «support» та «moderator» на ваші.

Тепер, якщо хтось спробує ввести заборонене ім’я користувача під час реєстрації на вашому сайті WordPress, він побачить повідомлення про помилку. Якщо це спам-бот, то він не досягне цілі.

Якщо ж на сайті нема потреби в реєстрації нових користувачів, то краще взагалі змінити адресу сторінки авторизації сайту на WordPress.

Отже, якщо ви вирішили таким чином боротися зі спамними реєстраціями, то заборонити реєструватися з певним словом в логіні буде самим простим варіантом. Надіюсь вам допоможе приведений код. Пишіть в коментарях з якою проблемою ви зіткнулись борючись зі спамом або коли вставляєте приведений код на свій сайт. Буду радий зворотному зв’язку!

Вам також може сподобатися

Один коментар

  1. Як же достали вже ці спамери! Дякую вам за код. Другий варіант краще, бо можна декілька слів ввести заборону.

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *