Как настроить автоудаление старых черезашищенных пользователей WordPress

Введение в проблему черезашищенных пользователей WordPress

В WordPress часто возникают ситуации, когда пользователи создают аккаунты, подтверждают их по электронной почте (черезашищенные пользователи), но затем перестают быть активными или не входят на сайт длительное время. Накопление таких аккаунтов может привести к увеличению нагрузки на базу данных, а также создавать потенциальные угрозы безопасности, если учетные записи неактивны, но остаются в системе.

Автоматическое удаление старых черезашищенных пользователей позволяет поддерживать чистоту базы данных, улучшать производительность сайта и снижать риски, связанные с устаревшими учетными записями. В этой статье мы подробно рассмотрим, как реализовать такую автоматизацию с помощью кода и плагинов.

Почему важно удалять старых черезашищенных пользователей

Черезашищенные пользователи — это аккаунты, которые подтвердили регистрацию, но не проявили активности на сайте длительное время. Их удаление важно по нескольким причинам:

  • Оптимизация базы данных: Удаление неактивных пользователей снижает объем таблиц и ускоряет запросы.
  • Безопасность: Старая учетная запись может быть скомпрометирована, особенно если пароль слабый или известен злоумышленникам.
  • Улучшение пользовательского опыта: Администраторы получают более точную статистику по активным пользователям.

Без регулярного удаления такие пользователи могут накапливаться и создавать шум в данных.

Как определить старых черезашищенных пользователей

Для автоматического удаления важно точно определить, кто считается «старым черезашищенным пользователем». Обычно критерии следующие:

  • Пользователь подтвердил регистрацию (статус активирован).
  • Отсутствие активности на сайте более определенного периода (например, 6 месяцев или год).
  • Дата последнего входа или дата последней активности ниже заданного порога.

WordPress по умолчанию не хранит дату последнего входа, поэтому понадобится либо использовать метаполя, либо дополнительные плагины для отслеживания активности.

Использование метаполя для хранения даты последнего входа

Вы можете использовать хуки для обновления метаполя при каждом входе пользователя:

add_action('wp_login', 'wpupdate_update_last_login', 10, 2);
function wpupdate_update_last_login($user_login, $user) {
    update_user_meta($user->ID, 'wpupdate_last_login', current_time('mysql'));
}

Таким образом, мы получаем дату последнего входа, по которой можно фильтровать пользователей.

Пример кода для автоудаления старых черезашищенных пользователей

Ниже пример функции, которая удалит пользователей, не входивших в систему более 180 дней, и имеющих статус подтвержденного пользователя. Предположим, что черезашищенные пользователи имеют определенную роль, например, subscriber:

function wpupdate_delete_old_verified_users() {
    $days = 180; // Порог времени в днях
    $date_threshold = date('Y-m-d H:i:s', strtotime('-' . $days . ' days'));

    $args = array(
        'role' => 'subscriber',
        'meta_query' => array(
            array(
                'key' => 'wpupdate_last_login',
                'value' => $date_threshold,
                'compare' => '<',
                'type' => 'DATETIME'
            ),
        ),
        'fields' => 'ID',
        'number' => -1
    );

    $user_query = new WP_User_Query($args);
    $users = $user_query->get_results();

    if (!empty($users)) {
        foreach ($users as $user_id) {
            wp_delete_user($user_id);
        }
    }
}

Эту функцию можно запускать в кроне WordPress для автоматизации процесса.

Добавление задачи в WP-Cron

Чтобы функция выполнялась регулярно, добавим расписание:

if (!wp_next_scheduled('wpupdate_cron_delete_old_users')) {
    wp_schedule_event(time(), 'daily', 'wpupdate_cron_delete_old_users');
}

add_action('wpupdate_cron_delete_old_users', 'wpupdate_delete_old_verified_users');

Так функция будет срабатывать ежедневно и удалять старые черезашищенные учетные записи.

Использование плагинов для отслеживания активности и удаления пользователей

Если вы не хотите писать код, можно использовать плагины, упрощающие задачу:

  • Inactive User Deleter — позволяет автоматически удалять неактивных пользователей по заданным критериям.
  • WP Activity Log — помогает отслеживать активность пользователей, включая даты входов.
  • Clearfy Pro (https://wpshop.ru/clearfy-pro/?utm_source=wpupdate.ru&utm_medium=article&utm_campaign=kak-nastroit-avtoudaleniye-staryh-cherezashishchennyh-polzovatelej-wordpress) — плагин для оптимизации и безопасности, включая управление неактивными пользователями.

Эти инструменты помогут упростить администрирование без необходимости писать кастомный код.

Рекомендации по безопасности и резервному копированию

Перед автоматическим удалением пользователей обязательно:

  • Создавайте резервные копии базы данных — на случай ошибок и потери данных.
  • Убедитесь, что удаляются только действительно неактивные и черезашищенные пользователи.
  • Тестируйте код на тестовом сайте перед внедрением на рабочем проекте.

Также можно добавить уведомления администратору перед удалением учетных записей для дополнительного контроля.

Как доработать код под свои нужды

В зависимости от специфики сайта, роль пользователя или метки подтверждения могут отличаться. Например, если вы используете сторонние плагины для регистрации, у пользователей могут быть свои метаполя или роли. В таком случае измените параметры WP_User_Query и условия фильтрации.

Для более точного контроля можно добавить логи действий, чтобы видеть, кто и когда был удален.

function wpupdate_log_deleted_user($user_id) {
    $user_info = get_userdata($user_id);
    error_log('Deleted user: ' . $user_info->user_login . ' (ID: ' . $user_id . ') at ' . current_time('mysql'));
}

// Вызов внутри цикла удаления
// wpupdate_log_deleted_user($user_id);

Выводы и полезные ссылки

Автоматическое удаление старых черезашищенных пользователей поможет поддерживать сайт в порядке и повысить безопасность. Используйте примеры кода из статьи или проверенные плагины для реализации задачи.

Полезные ссылки:

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
Как избежать проблем с кэшированием в WordPress: практические советы и примеры
07.04.2026
WooCommerce: как использовать хуки для изменения стоимости товара в корзине
21.05.2026
Оптимизация отображения библиотеки медиа в WordPress: практические решения и примеры
10.04.2026
Как использовать хуки и фильтры в WordPress: подробное руководство для начинающих
13.11.2025
Как избежать проблем с кэшированием в WordPress: практические советы и примеры
02.03.2026
×
Оптимизируй свой сайт!

Скидка -15% на премиум плагин Clearfy Pro

Купить плагин сейчас ⋙