Спам регистрации — одна из распространённых проблем на сайтах WordPress, особенно если регистрация открыта для всех пользователей. В этой статье мы подробно разберём, как эффективно удалять уже зарегистрированный спам и предотвращать появление новых спам-аккаунтов с помощью плагинов и кастомного кода.
Почему важно удалять и блокировать спам регистрации
Спам-аккаунты не только засоряют базу данных, но и могут наносить вред сайту: создавать нагрузку, использовать ресурсы сервера, портить статистику, а иногда даже служить точкой входа для хакерских атак. Поэтому регулярное удаление и предотвращение спама — важная задача для любого администратора WordPress.
Простое отключение регистрации решает проблему, но не всегда приемлемо. Куда лучше — реализовать фильтры и автоматическую очистку базы.
Удаление спам регистраций: ручные и автоматические способы
Удаление через админ-панель
Самый простой способ — перейти в Пользователи > Все пользователи и вручную удалить сомнительные аккаунты. Но при большом количестве пользователей это быстро становится непрактично.
Удаление с помощью SQL-запроса
Если вы уверены, что все спам-пользователи помечены ролью или каким-то мета-полем, можно удалить их напрямую из базы. Например, для удаления всех пользователей с ролью subscriber и email на бесплатных почтовых сервисах:
DELETE u, um FROM wp_users u LEFT JOIN wp_usermeta um ON u.ID = um.user_id WHERE u.user_email LIKE '%@mail.ru' OR u.user_email LIKE '%@yandex.ru';Перед выполнением обязательно сделайте резервную копию базы данных.
Автоматическое удаление с помощью WP-Cron
Для регулярной очистки можно добавить задачу WP-Cron, которая будет удалять спам пользователей по заданным критериям, например, по дате регистрации и email. Ниже пример функции для wpfaq:
function wpfaq_delete_spam_users() {
$args = array(
'role' => 'subscriber',
'meta_query' => array(
array(
'key' => 'spam_flag',
'value' => '1',
'compare' => '=',
),
),
'fields' => 'ID',
'number' => 100,
);
$user_query = new WP_User_Query($args);
if (!empty($user_query->results)) {
foreach ($user_query->results as $user_id) {
require_once ABSPATH.'wp-admin/includes/user.php';
wp_delete_user($user_id);
}
}
}
add_action('wpfaq_cron_delete_spam', 'wpfaq_delete_spam_users');
if (!wp_next_scheduled('wpfaq_cron_delete_spam')) {
wp_schedule_event(time(), 'daily', 'wpfaq_cron_delete_spam');
}Эта функция удаляет пользователей с мета-ключом spam_flag=1 раз в сутки.
Блокировка спам регистраций: плагины и код
Плагины для защиты от спам регистраций
- WPBruiser — антиспам плагин без капчи, который защищает регистрацию, комментарии и форму входа от ботов.
- Stop Spammers — комплексный фильтр спама с возможностью блокировать IP, email, и применять геоблоки.
- Clearfy Pro (https://wpshop.ru/plugins/clearfy-pro/?utm_source=wpfaq.ru&utm_medium=article&utm_campaign=kak-udalit-i-zablokirovat-spam-registratsii-v-wordpress) — оптимизационный плагин, который имеет модули для защиты от спама и отключения ненужных функций WordPress, что снижает риск спама.
Выбор зависит от ваших требований и конкретных условий сайта.
Добавление проверки email при регистрации
Можно запретить регистрацию с бесплатных почтовых сервисов или подозрительных доменов с помощью фильтра registration_errors. Пример кода:
function wpfaq_block_spam_email_registration($errors, $sanitized_user_login, $user_email) {
$blocked_domains = array('mail.ru', 'yandex.ru', 'spamdomain.com');
$email_domain = substr(strrchr($user_email, '@'), 1);
if (in_array($email_domain, $blocked_domains)) {
$errors->add('blocked_email_domain', __('Регистрация с этого домена запрещена.'));
}
return $errors;
}
add_filter('registration_errors', 'wpfaq_block_spam_email_registration', 10, 3);Этот код проверяет домен email и отклоняет регистрацию, если домен в списке запрещённых.
Реализация проверки с помощью Honeypot
Honeypot — невидимое поле для ботов. Если поле заполнено, значит форма заполнила машина и регистрацию можно блокировать.
// Добавляем поле honeypot в форму регистрации
function wpfaq_add_honeypot_field() {
echo '<p style="display:none;"><label for="wpfaq_hp">Оставьте это поле пустым</label><input type="text" name="wpfaq_hp" id="wpfaq_hp" value="" /></p>';
}
add_action('register_form', 'wpfaq_add_honeypot_field');
// Проверяем поле при регистрации
function wpfaq_check_honeypot_field($errors, $sanitized_user_login, $user_email) {
if (!empty($_POST['wpfaq_hp'])) {
$errors->add('honeypot_error', __('Ошибка регистрации.'));
}
return $errors;
}
add_filter('registration_errors', 'wpfaq_check_honeypot_field', 10, 3);Рекомендации по комплексной защите от спам регистраций
Комбинируйте методы: плагин-антиспам, фильтры email, Honeypot и периодическую очистку базы от спам-аккаунтов. Это значительно уменьшит количество мусорных регистраций и сохранит ресурсы вашего сайта.
Для мониторинга и управления регистрациями можно использовать плагины с расширенными возможностями, например, Clearfy Pro, который интегрируется с другими сервисами и упрощает настройку безопасности.
Заключение
Удаление и блокировка спам регистраций требует системного подхода. Используйте готовые решения и дополняйте их собственными фильтрами и проверками. Регулярно проверяйте базу пользователей и обновляйте методы защиты для эффективной борьбы со спамом.