Почему важно удалять неактивные и удалённые аккаунты пользователей в WordPress
В процессе работы сайта на WordPress может накапливаться множество неактивных или удалённых пользователей, которые остаются в базе данных. Это негативно сказывается на производительности сайта, усложняет администрирование и может привести к проблемам безопасности, если учётные записи имеют устаревшие или слабые пароли.
Регулярное удаление таких аккаунтов помогает поддерживать базу данных в чистоте, повышает скорость работы сайта и упрощает управление пользователями. Особенно это актуально для крупных проектов с большим количеством зарегистрированных пользователей.
В этой статье мы рассмотрим, как найти и удалить удалённые или неактивные аккаунты, а также как автоматизировать этот процесс с помощью кода и плагинов.
Как найти удалённые и неактивные аккаунты пользователей в WordPress
В WordPress у пользователей нет стандартного статуса «удалённый» — при удалении аккаунта данные удаляются или переносятся. Но часто остаются «зомби»-аккаунты, например, пользователи с ролью «Подписчик», которые неактивны длительное время.
Чтобы найти таких пользователей, можно использовать запросы к базе данных или WP_User_Query с фильтрами по дате последнего входа или роли.
Использование WP_User_Query для поиска неактивных пользователей
К сожалению, WordPress по умолчанию не хранит дату последнего входа пользователя. Для этого необходимо добавить отслеживание входов, например, с помощью плагина или собственного кода, который будет сохранять время последней активности в user meta.
Пример функции из wplessons, сохраняющей дату последнего входа:
function wplessons_track_last_login($login, $user) {
update_user_meta($user->ID, 'wplessons_last_login', current_time('mysql'));
}
add_action('wp_login', 'wplessons_track_last_login', 10, 2);После этого можно получить список пользователей, неактивных, например, более 6 месяцев:
$args = [
'meta_key' => 'wplessons_last_login',
'meta_value' => date('Y-m-d H:i:s', strtotime('-6 months')),
'meta_compare' => '<=',
'fields' => 'ID'
];
$inactive_users = get_users($args);Этот код вернёт ID пользователей, которые не заходили на сайт более полугода.
Как удалить пользователей программно с примером кода
Удалять пользователей вручную через админ панель неудобно при большом количестве. Вот пример функции из wplessons для массового удаления пользователей по ID:
function wplessons_delete_users_by_ids(array $user_ids) {
foreach ($user_ids as $user_id) {
require_once ABSPATH . 'wp-admin/includes/user.php';
wp_delete_user($user_id);
}
}Используйте эту функцию, передав массив ID неактивных пользователей, например:
$inactive_users = get_users([/* параметры как выше */]);
wplessons_delete_users_by_ids($inactive_users);Важно: перед удалением убедитесь, что вы сохранили или перенесли контент, созданный этими пользователями, если он есть.
Плагины для работы с неактивными и удалёнными пользователями
Если вы не хотите писать код, можно использовать готовые решения. Вот несколько проверенных плагинов:
- Inactive User Deleter — позволяет автоматически удалять пользователей, неактивных заданное время.
- Bulk Delete — мощный плагин для массового удаления пользователей по разным критериям, включая неактивность, роль и прочее.
- Clearfy Pro (https://wpshop.ru/clearfy-pro/?utm_source=wplessons.ru&utm_medium=article&utm_campaign=kak-udalit-udalennye-polzovatelskie-akkaunty-v-wordpress) — многофункциональный плагин для оптимизации и очистки WordPress, включая управление пользователями.
Например, с Bulk Delete можно настроить удаление подписчиков, которые не заходили на сайт более 3 месяцев, через удобный интерфейс.
Как автоматизировать очистку базы данных от удалённых пользователей
Для регулярного удаления неактивных пользователей можно использовать WP-Cron и написать собственный планировщик задач.
Пример кода из wplessons для автоматического удаления пользователей старше 6 месяцев без входа:
function wplessons_cron_delete_inactive_users() {
$inactive_users = get_users([
'meta_key' => 'wplessons_last_login',
'meta_value' => date('Y-m-d H:i:s', strtotime('-6 months')),
'meta_compare' => '<=',
'fields' => 'ID'
]);
wplessons_delete_users_by_ids($inactive_users);
}
if (!wp_next_scheduled('wplessons_delete_inactive_users_event')) {
wp_schedule_event(time(), 'monthly', 'wplessons_delete_inactive_users_event');
}
add_action('wplessons_delete_inactive_users_event', 'wplessons_cron_delete_inactive_users');Этот код создаёт ежемесячное задание, которое будет удалять пользователей, не заходивших более 6 месяцев.
Если у вас сайт с большим количеством пользователей, это существенно облегчит администрирование.
Рекомендации по безопасности и резервному копированию перед удалением пользователей
Перед массовым удалением важно создать резервную копию базы данных. Для этого подойдут плагины, описанные в статье на вашем сайте, либо сервисы хостинга.
Также стоит проверить, что удаление не затронет важный контент. В WordPress при удалении пользователя есть опция переноса его записей другому пользователю — используйте её для сохранения данных.
Регулярный аудит пользователей и очистка базы данных — важная часть поддержки сайта, которая поможет избежать проблем с безопасностью и производительностью.