Если на сайте с открытой регистрацией начали скапливаться спам-пользователи, лучше не откладывать чистку. Такие аккаунты засоряют список пользователей, мешают искать реальных людей, могут создавать лишнюю нагрузку и иногда используются для рассылок или других злоупотреблений. Удалить их можно двумя способами: вручную через админку WordPress или массово через код, если спама много и чистить по одному уже неудобно.
Ниже разберу оба варианта без лишней теории: сначала безопасная ручная очистка, затем способ для массового удаления через PHP-код. В конце покажу, как проверить результат и что сделать, чтобы спам не начал накапливаться снова.
Как понять, что перед вами именно спам-аккаунты
Обычно такие пользователи легко узнаются по набору признаков. У них случайные имена, пустые профили, однотипные почты, странные сайты в поле профиля или одинаковые даты регистрации с большим количеством похожих записей. Если на сайте есть роли вроде subscriber или пользовательские роли для регистрации, спам чаще всего оседает именно там.
Перед удалением стоит быстро просмотреть несколько карточек пользователей и убедиться, что вы не заденете реальных клиентов, авторов или участников сообщества. Если сомневаетесь, сначала выгрузите список пользователей или сделайте резервную копию базы данных. Это особенно важно, если на сайте есть заказы, комментарии, публикации или другая активность, привязанная к аккаунтам.
Удаление спам-пользователей вручную через админку
Если спама немного, самый безопасный путь — удалить пользователей из панели WordPress. Для этого откройте раздел Пользователи в админке и отфильтруйте список по роли или по признакам спама. Дальше можно удалить записи по одной или сразу несколько через массовые действия.
Обычно порядок такой:
- Откройте Пользователи → Все пользователи.
- Отметьте подозрительные аккаунты галочками.
- В выпадающем списке массовых действий выберите Удалить.
- Нажмите Применить.
WordPress спросит, что делать с материалами удаляемых пользователей. Если у них есть записи, страницы или другие объекты, их можно переназначить другому пользователю. Для спам-аккаунтов это обычно не требуется, но если есть хоть малейший шанс, что среди них есть реальные авторы, лучше не удалять без проверки.
У ручного способа есть ограничение: он подходит только для небольшого количества записей. Если у вас сотни или тысячи спам-пользователей, админка станет неудобной, а удаление по одному займёт слишком много времени.
Как удалить спам-пользователей через код массово
Когда аккаунтов много, удобнее удалить их программно. Самый практичный вариант — временно выполнить PHP-код через functions.php дочерней темы, через небольшой mu-plugin или через отдельный скрипт в среде, где вы контролируете запуск. Для постоянного использования такой код не нужен: его добавляют только на время очистки, а потом убирают.
Перед запуском обязательно сделайте резервную копию базы данных. Код ниже удаляет пользователей без возможности отмены через корзину, а вместе с ними могут исчезнуть связанные данные, если вы не переназначите их заранее.
Пример: удалить всех пользователей с ролью subscriber, зарегистрированных после определённой даты. Это полезно, если спам пошёл волной с конкретного дня.
add_action('init', function () {
if ( ! current_user_can('manage_options') ) {
return;
}
if ( ! isset($_GET['delete_spam_users']) ) {
return;
}
$users = get_users([
'role' => 'subscriber',
'date_query' => [
[
'after' => '2026-01-01 00:00:00',
'inclusive' => true,
],
],
'fields' => 'ID',
'number' => -1,
]);
foreach ($users as $user_id) {
wp_delete_user($user_id);
}
wp_die('Спам-пользователи удалены.');
});Этот пример специально сделан с защитой: код сработает только для администратора и только если в адресе есть параметр ?delete_spam_users=1. После запуска страницу можно открыть один раз, дождаться сообщения об удалении и затем сразу убрать код из сайта.
Если вам нужно удалить пользователей по другому признаку, логику можно изменить. Например, искать по роли, по диапазону дат или по конкретному списку ID. В реальной работе я советую сначала получить список кандидатов через get_users(), проверить его и только потом вызывать wp_delete_user().
Удаление по списку ID
Если вы уже собрали подозрительные аккаунты вручную, проще удалить их по ID. Это безопаснее, чем массово чистить по роли, потому что вы точно контролируете список.
$spam_user_ids = [12, 25, 48, 91];
foreach ($spam_user_ids as $user_id) {
wp_delete_user($user_id);
}Такой вариант удобен, когда спам-пользователи разбросаны среди обычных аккаунтов и не подходят под один общий фильтр.
Что учитывать перед удалением
Удаление пользователей в WordPress затрагивает не только строку в таблице пользователей. Если у аккаунта есть записи, комментарии или другой контент, WordPress предложит переназначить его другому пользователю. Если этого не сделать, часть данных может быть удалена вместе с аккаунтом или остаться без нормального владельца — это зависит от типа контента и способа удаления.
Поэтому перед массовой чисткой проверьте три вещи:
- есть ли у подозрительных аккаунтов опубликованные материалы;
- нужны ли вам их комментарии или история действий;
- есть ли у вас свежая резервная копия базы данных.
Если сайт работает на общем хостинге и у вас нет доступа к WP-CLI или серверным инструментам, лучше ограничиться админкой или временным PHP-кодом. Если доступ есть, можно автоматизировать проверку и удаление аккуратнее, но это уже зависит от конкретной инфраструктуры.
Как проверить, что очистка прошла успешно
После удаления откройте Пользователи → Все пользователи и проверьте, исчезли ли спам-аккаунты из списка. Затем полезно сделать ещё две проверки: поиск по почте или имени, если вы помните характерные шаблоны, и просмотр ролей, чтобы убедиться, что не осталось массовых регистраций с одинаковыми признаками.
Если вы удаляли пользователей через код, проверьте, что временный скрипт больше не доступен извне. Оставлять такой код на сайте нельзя: при повторном вызове он снова удалит подходящих пользователей. После завершения работы удалите его из темы, mu-plugin или другого места, где вы его размещали.
Как снизить риск повторного засорения
Полностью исключить спам-регистрации сложно, но можно заметно сократить их количество. Самое полезное — ограничить автоматические регистрации и добавить дополнительную проверку формы. Если на сайте регистрация действительно нужна, используйте меры, которые не мешают обычным пользователям: CAPTCHA, скрытые антиспам-поля, подтверждение email и модерацию новых аккаунтов, если это допустимо по сценарию сайта.
Ещё один практичный шаг — регулярно просматривать новых пользователей, особенно если регистрация открыта без ручного одобрения. Чем раньше вы удаляете мусорные аккаунты, тем меньше они успевают засорить базу и статистику.
Если вам нужна не только разовая чистка, но и постоянное наведение порядка на сайте, можно посмотреть в сторону инструментов для технического обслуживания WordPress. Например, Clearfy Pro помогает с рядом задач по чистке и оптимизации сайта, но сам по себе он не заменяет контроль регистраций и не удаляет спам-пользователей автоматически без вашей настройки.
Если коротко: при небольшом количестве спама удаляйте пользователей вручную через админку, при массовом засорении — используйте временный PHP-код с резервной копией базы и обязательной проверкой результата. Это самый прямой и безопасный путь без лишних действий и лишних рисков для реальных аккаунтов.