Останнім часом часто активізуються боти які створюють фейкові акаунти користувачів 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.
Отже, якщо ви вирішили таким чином боротися зі спамними реєстраціями, то заборонити реєструватися з певним словом в логіні буде самим простим варіантом. Надіюсь вам допоможе приведений код. Пишіть в коментарях з якою проблемою ви зіткнулись борючись зі спамом або коли вставляєте приведений код на свій сайт. Буду радий зворотному зв’язку!
Як же достали вже ці спамери! Дякую вам за код. Другий варіант краще, бо можна декілька слів ввести заборону.