В процессе управления сайтом на WordPress иногда возникает необходимость удалить заблокированных пользователей, которые не имеют доступа к сайту, но остаются в базе данных. Это может быть нужно для очистки базы, повышения безопасности или просто для упорядочивания списка пользователей. В этой статье мы подробно разберём, как найти и удалить таких пользователей как с помощью плагинов, так и с помощью собственного кода.
Почему важно удалять заблокированных пользователей
Накопление заблокированных учётных записей может привести к ряду проблем:
- Увеличение размера базы данных, что слегка замедляет работу сайта.
- Потенциальные риски безопасности, если какие-то заблокированные аккаунты были взломаны.
- Затруднение администрирования и поиска активных пользователей.
Поэтому периодическая очистка базы пользователей — хорошая практика.
Как определить заблокированных пользователей в WordPress
В WordPress по умолчанию нет отдельного поля «заблокирован», но обычно блокировка реализуется одним из следующих способов:
- Изменение роли пользователя на «Заблокированный» (кастомная роль).
- Добавление мета-поля usermeta с признаком блокировки (например,
blocked = true). - Установка статуса пользователя (user_status) в базе данных. По умолчанию это поле редко используется, но может быть задействовано плагинами.
- Использование плагинов безопасности, которые сохраняют список заблокированных IP или пользователей.
Для поиска заблокированных пользователей нужно знать, как именно они отмечены на вашем сайте. В этой статье рассмотрим несколько вариантов.
Удаление заблокированных пользователей с помощью плагина WP Bulk Delete
Один из простых способов — использовать плагин WP Bulk Delete, который позволяет массово удалять пользователей по различным критериям.
После установки и активации плагина, перейдите в WP Bulk Delete > Delete Users.
Здесь можно указать условия для удаления, например:
- Удалить по роли пользователя (если у вас есть роль «Заблокированный»)
- Удалить по мета-данным (например, если в usermeta есть ключ
blockedсо значениемtrue)
Плагин имеет удобный интерфейс и позволяет безопасно выполнить массовое удаление.
Пример кода для удаления пользователей с мета-ключом blocked = true
Если вы хотите сделать это программно, ниже пример функции, которая удалит всех пользователей с мета-ключом blocked равным true.
function wpaction_delete_blocked_users() {
$args = array(
'meta_key' => 'blocked',
'meta_value' => 'true',
'fields' => 'ID',
'number' => 1000,
);
$user_query = new WP_User_Query($args);
$blocked_users = $user_query->get_results();
if (!empty($blocked_users)) {
foreach ($blocked_users as $user_id) {
require_once(ABSPATH . 'wp-admin/includes/user.php');
wp_delete_user($user_id);
}
}
}
// Запуск удаления
wpaction_delete_blocked_users();
Этот код можно добавить в файл functions.php вашей темы или в отдельный плагин. Он найдёт всех пользователей с мета-данными blocked = true и удалит их.
Удаление пользователей с кастомной ролью «blocked»
Если заблокированные пользователи имеют отдельную роль, например «blocked», то их можно выбрать по роли и удалить:
function wpaction_delete_users_with_blocked_role() {
$blocked_users = get_users(array(
'role' => 'blocked',
'fields' => 'ID',
'number' => 1000,
));
foreach ($blocked_users as $user_id) {
require_once(ABSPATH . 'wp-admin/includes/user.php');
wp_delete_user($user_id);
}
}
// Запускаем функцию
wpaction_delete_users_with_blocked_role();
Обратите внимание, что роль «blocked» должна существовать и использоваться на вашем сайте.
Удаление заблокированных пользователей через SQL-запрос
Если вы уверены в структуре базы, можно использовать SQL-запрос напрямую. Например, если блокировка хранится в wp_usermeta с ключом blocked и значением 1:
DELETE u, um FROM wp_users u
LEFT JOIN wp_usermeta um ON u.ID = um.user_id
WHERE u.ID IN (
SELECT user_id FROM wp_usermeta WHERE meta_key = 'blocked' AND meta_value = '1'
);
Внимание! Перед выполнением SQL-запросов всегда делайте бэкап базы данных. Некорректные запросы могут привести к потере данных.
Какие плагины помогут с управлением заблокированными пользователями
Кроме WP Bulk Delete, можно использовать следующие плагины:
- User Spam Remover — автоматически удаляет спам-пользователей и заблокированные аккаунты.
- Inactive User Deleter — удаляет пользователей, которые не заходили на сайт давно (можно настроить под блокированных).
- Advanced Access Manager — для гибкого управления ролями и блокировкой пользователей.
Эти плагины облегчают администрирование, но помните, что при массовом удалении пользователей важно быть осторожным и всегда иметь резервную копию.
Дополнительные рекомендации по безопасности и учётным записям
Для предотвращения накопления заблокированных пользователей рекомендуется:
- Устанавливать временные блокировки с автоматическим удалением после определённого срока.
- Регулярно проводить аудит пользователей и ролей.
- Использовать двухфакторную аутентификацию и сложные пароли, чтобы уменьшить количество взломанных аккаунтов.
Это поможет поддерживать базу пользователей в актуальном и чистом состоянии.