Заблокированные и неактивные аккаунты пользователей в WordPress создают лишнюю нагрузку на базу данных и могут представлять угрозу безопасности. В этой статье мы подробно разберём, как эффективно находить и удалять такие аккаунты, используя как готовые плагины, так и кастомный код.
Почему важно удалять заблокированные и неактивные аккаунты WordPress
С течением времени на сайте накапливаются пользователи, которые давно не заходили или были заблокированы администрацией. Это не только увеличивает размер базы данных, но и может привести к ряду проблем:
- Риск взлома, если аккаунты имеют слабые пароли.
- Увеличение нагрузки на сервер при проверках прав доступа.
- Засорение интерфейса управления пользователями.
Регулярная очистка помогает поддерживать производительность и безопасность сайта.
Как определить заблокированные и неактивные аккаунты WordPress
Заблокированные аккаунты обычно имеют специальный статус или роль, например, blocked, banned или используются плагины безопасности, которые изменяют мета-поля пользователей.
Неактивные аккаунты — это те, кто не заходил на сайт длительное время. WordPress по умолчанию не хранит дату последнего входа, но это можно исправить с помощью плагинов или кода.
Отслеживание последнего входа пользователя с помощью кода
Добавьте следующий код в functions.php вашей темы или создайте маленький плагин для сохранения мета-поля last_login с датой последнего входа:
add_action('wp_login', 'wpsync_save_last_login', 10, 2);
function wpsync_save_last_login($user_login, $user) {
update_user_meta($user->ID, 'last_login', current_time('mysql'));
}Теперь для каждого пользователя будет сохраняться дата последнего входа, которую мы можем использовать для фильтрации неактивных аккаунтов.
Удаление заблокированных пользователей через SQL и WP-CLI
Если у вас много пользователей, можно использовать SQL-запросы для удаления. Например, если у заблокированных пользователей в мета-данных account_status = blocked, то запрос будет таким:
DELETE u, um FROM wp_users u
JOIN wp_usermeta um ON u.ID = um.user_id
WHERE um.meta_key = 'account_status' AND um.meta_value = 'blocked';Для удаления неактивных пользователей по дате последнего входа через WP-CLI используйте команду:
wp user delete $(wp user list --field=ID --meta_key=last_login --meta_compare='<=' --meta_value='2023-01-01 00:00:00')Так вы удалите всех пользователей, которые не заходили с начала 2023 года.
Плагины для управления и удаления заблокированных пользователей
Если вы предпочитаете готовые решения, можно рассмотреть следующие плагины:
- User Cleaner — позволяет находить и удалять неактивных пользователей по дате последнего входа.
- Inactive User Deleter — удаляет пользователей, неактивных определённый период.
- WP Bulk Delete — мощный инструмент для массового удаления пользователей по различным критериям, включая роли и мета-данные.
Все эти плагины можно найти на WPSHOP.ru с удобной установкой и поддержкой.
Пример функции для удаления заблокированных пользователей по мета-данным
Ниже приведён пример простой функции для удаления пользователей, у которых в мета-данных указано account_status = blocked:
function wpsync_delete_blocked_users() {
$blocked_users = get_users(array(
'meta_key' => 'account_status',
'meta_value' => 'blocked',
'fields' => 'ID'
));
foreach ($blocked_users as $user_id) {
require_once(ABSPATH.'wp-admin/includes/user.php');
wp_delete_user($user_id);
}
}Вы можете запускать эту функцию по расписанию через WP-Cron или вручную.
Как автоматизировать удаление неактивных пользователей с WP-Cron
Чтобы автоматически удалять пользователей, которые не заходили, например, более 180 дней, можно использовать WP-Cron:
add_action('wpsync_delete_inactive_users_cron', 'wpsync_delete_inactive_users');
function wpsync_delete_inactive_users() {
$date_threshold = date('Y-m-d H:i:s', strtotime('-180 days'));
$inactive_users = get_users(array(
'meta_key' => 'last_login',
'meta_compare' => '<=',
'meta_value' => $date_threshold,
'fields' => 'ID',
));
foreach ($inactive_users as $user_id) {
require_once(ABSPATH.'wp-admin/includes/user.php');
wp_delete_user($user_id);
}
}
// Запланировать задачу при активации плагина
if (!wp_next_scheduled('wpsync_delete_inactive_users_cron')) {
wp_schedule_event(time(), 'daily', 'wpsync_delete_inactive_users_cron');
}Такой подход позволит поддерживать базу пользователей в чистоте без вашего постоянного участия.
Резюме и рекомендации по безопасности
Удаление заблокированных и неактивных аккаунтов — важная часть поддержания безопасности и производительности WordPress. Рекомендуется:
- Внедрить отслеживание даты последнего входа.
- Использовать WP-CLI или SQL для массовых операций.
- Автоматизировать процесс с WP-Cron.
- Проверять наличие резервных копий перед удалением.
Если хотите комплексные инструменты для анализа и оптимизации сайта, обратите внимание на Clearfy Pro — плагин для тонкой настройки и оптимизации WordPress.