В крупных и активно развивающихся проектах на WordPress часто накапливается большое количество пользователей, которые зарегистрировались, но так и не проявили активность. Это может создавать нагрузку на базу данных и усложнять администрирование сайта. В этой статье рассмотрим, как автоматически удалять неактивных пользователей по дате регистрации, используя кастомный код и плагины, а также как обезопасить этот процесс.
Почему важно удалять неактивных пользователей WordPress
Неактивные пользователи — это те, кто зарегистрировался, но не заходили на сайт длительное время или не совершали никаких действий. Их накопление приводит к следующим проблемам:
- Увеличение размера базы данных и замедление работы сайта.
- Риск безопасности — старые учетные записи могут быть взломаны.
- Сложности при управлении пользователями и рассылками.
Поэтому периодическая очистка базы пользователей повышает производительность и безопасность.
Как определить неактивных пользователей по дате регистрации
Для начала нам нужно определить критерии неактивности. Чаще всего — это пользователи, которые не заходили на сайт более 6 месяцев или 1 года с момента регистрации.
В WordPress дата регистрации хранится в таблице wp_users в поле user_registered. Чтобы найти таких пользователей, можно использовать SQL-запрос:
SELECT ID, user_login, user_registered FROM wp_users WHERE user_registered < DATE_SUB(NOW(), INTERVAL 1 YEAR);Однако для удаления пользователей лучше использовать PHP и WP функции, чтобы корректно удалить все связанные с пользователем данные.
Пример функции для удаления неактивных пользователей по дате регистрации
Ниже приведён пример функции для wpquery, которая автоматически удаляет пользователей, зарегистрированных более года назад, и не заходивших на сайт (отслеживаем через мета-поле).
function wpquery_delete_inactive_users_by_registration_date() {
global $wpdb;
$date_threshold = date('Y-m-d H:i:s', strtotime('-1 year'));
// Получаем пользователей, зарегистрированных более года назад
$user_ids = $wpdb->get_col($wpdb->prepare(
"SELECT ID FROM {$wpdb->users} WHERE user_registered < %s",
$date_threshold
));
foreach ($user_ids as $user_id) {
// Проверяем дату последнего входа (если хранится в мета, например, 'last_login')
$last_login = get_user_meta($user_id, 'last_login', true);
if (!$last_login) {
// Если нет данных о последнем входе, считаем пользователя неактивным
require_once ABSPATH . 'wp-admin/includes/user.php';
wp_delete_user($user_id);
} else {
// Если последний вход был больше года назад — удаляем
if (strtotime($last_login) < strtotime('-1 year')) {
require_once ABSPATH . 'wp-admin/includes/user.php';
wp_delete_user($user_id);
}
}
}
}
// Запуск функции раз в сутки через крон
if (!wp_next_scheduled('wpquery_daily_delete_inactive_users')) {
wp_schedule_event(time(), 'daily', 'wpquery_daily_delete_inactive_users');
}
add_action('wpquery_daily_delete_inactive_users', 'wpquery_delete_inactive_users_by_registration_date');В этом примере функция ищет пользователей по дате регистрации, затем проверяет последний вход (если мета-данные last_login не установлены, пользователь считается неактивным). Функция подключает стандартный WordPress-инструментарий для удаления пользователя, чтобы корректно очистить все связи.
Как автоматически отслеживать дату последнего входа пользователя
WordPress по умолчанию не хранит дату последнего входа, но её можно сохранять с помощью плагинов или собственного кода. Например, добавим хук для записи даты каждого входа в мета-поле:
function wpquery_save_last_login($login, $user) {
update_user_meta($user->ID, 'last_login', current_time('mysql'));
}
add_action('wp_login', 'wpquery_save_last_login', 10, 2);Этот код сохраняет дату и время последнего входа пользователя в мета-данные с ключом last_login. После этого функция удаления сможет использовать эти данные для оценки активности.
Использование плагинов для удаления неактивных пользователей
Если вы предпочитаете готовые решения, можно использовать плагины. Среди популярных:
- Inactive User Deleter — позволяет удалять пользователей по дате последнего входа.
- Delete Inactive Users — автоматизирует удаление пользователей, неактивных в заданный период.
Для интеграции с WPShop можно рассмотреть использование плагина Clearfy Pro, который включает функции оптимизации безопасности и может помочь с управлением пользователями. Подробнее: Clearfy Pro на WPShop.
Рекомендации по безопасности при удалении пользователей
При автоматическом удалении пользователей обязательно учитывайте:
- Делайте резервные копии базы данных перед запуском скриптов.
- Уведомляйте пользователей о предстоящем удалении (например, за 2 недели).
- Исключайте из удаления администраторов и важных ролей.
- Тестируйте на тестовом сайте перед запуском на боевом.
Например, чтобы исключить администраторов, добавьте проверку роли перед удалением:
$user_info = get_userdata($user_id);
if (in_array('administrator', $user_info->roles)) {
continue; // пропускаем администратора
}Заключение по теме удаления неактивных пользователей
Удаление неактивных пользователей по дате регистрации — важная задача для поддержания производительности и безопасности сайта на WordPress. Используя приведённый код и рекомендации, вы сможете автоматизировать этот процесс в удобном для вас формате. При необходимости комбинируйте кастомные решения с надёжными плагинами из каталога WordPress или от WPShop.