В процессе управления сайтом на WordPress иногда возникает задача удалить пользователей, которые больше не активны, а также заблокировать доступ для тех, кто удалил свой аккаунт, но может попытаться восстановиться или использовать старые данные для входа. В этой статье мы рассмотрим, как системно решать эти задачи с помощью кода и плагинов, а также как автоматизировать процесс.
Почему важно управлять удалёнными пользователями
Удалённые пользователи могут представлять угрозу безопасности, особенно если их аккаунты не удалены полностью или если они могут восстанавливать доступ через различные лазейки. Кроме того, большое количество неактивных или удалённых аккаунтов засоряет базу данных и может влиять на производительность сайта.
Поэтому важно:
- Полностью удалять данные пользователей, когда это необходимо;
- Блокировать повторный вход или регистрацию с похожими данными;
- Контролировать и анализировать активность пользователей.
Удаление пользователей через стандартный функционал WordPress
Для начала рассмотрим, как удалить пользователей вручную через админку WordPress. Это делается в разделе Пользователи → Все пользователи. Однако при большом количестве аккаунтов это неудобно. Для массового удаления лучше использовать код или плагины.
В WordPress пользователь удаляется функцией wp_delete_user(). Например, чтобы удалить пользователя с ID 123, можно использовать следующий код:
function wpcompany_delete_user_by_id($user_id) {
if (get_userdata($user_id)) {
wp_delete_user($user_id);
}
}Этот код можно добавить в файл functions.php вашей темы или в отдельный плагин.
Автоматическое удаление пользователей с определённым статусом
Иногда требуется удалять пользователей, которые, например, не активировали аккаунт в течение определённого времени. Для этого можно использовать мета-поля пользователей и WP-Cron для периодической проверки.
Пример функции, которая удаляет пользователей, зарегистрированных более 30 дней назад и неактивированных:
function wpcompany_auto_delete_inactive_users() {
$args = [
'meta_key' => 'account_activated',
'meta_value' => '0',
'date_query' => [
'before' => date('Y-m-d', strtotime('-30 days')),
],
'fields' => 'ID'
];
$user_query = new WP_User_Query($args);
foreach ($user_query->get_results() as $user_id) {
wp_delete_user($user_id);
}
}
add_action('wp_scheduled_delete_inactive_users', 'wpcompany_auto_delete_inactive_users');
if (!wp_next_scheduled('wp_scheduled_delete_inactive_users')) {
wp_schedule_event(time(), 'daily', 'wp_scheduled_delete_inactive_users');
}Не забудьте при регистрации пользователей добавлять мета-поле account_activated, чтобы отслеживать их статус.
Блокировка доступа удалённых пользователей по IP или email
Если нужно не просто удалить пользователя, а заблокировать повторный вход с тех же данных, можно использовать плагины или реализовать фильтрацию самостоятельно.
Например, для блокировки по email добавим проверку при авторизации:
function wpcompany_block_deleted_user_login($user, $username, $password) {
$blocked_emails = get_option('wpcompany_blocked_emails', []);
if (in_array($username, $blocked_emails)) {
return new WP_Error('blocked_user', __('Доступ заблокирован для этого пользователя.'));
}
return $user;
}
add_filter('authenticate', 'wpcompany_block_deleted_user_login', 30, 3);Для добавления email в список блокировки используйте обновление опции через админку или напрямую в коде.
Использование плагинов для управления пользователями
Существуют плагины, которые облегчают управление удалёнными и заблокированными пользователями. Среди них:
- Clearfy Pro — расширенные возможности по безопасности и управлению пользователями, включая блокировку и удаление;
- WPCommunity — плагин для управления сообществом с функциями модерации и удаления пользователей;
- My Popup — можно использовать для уведомления пользователей о блокировках.
Эти инструменты помогут автоматизировать процесс и повысить безопасность.
Советы по безопасности при удалении и блокировке пользователей
При работе с удалением и блокировкой пользователей важно помнить:
- Регулярно делайте резервные копии базы данных перед массовыми операциями;
- Убедитесь, что удаление данных соответствует требованиям законодательства (например, GDPR);
- Проверяйте, что удаляются все связанные с пользователем данные (мета, комментарии, посты), если это необходимо;
- Используйте надежные методы блокировки, чтобы предотвратить обход ограничений.
При правильном подходе вы сможете поддерживать чистоту базы пользователей и безопасность сайта на высоком уровне.