Автоматическое удаление неактивных пользователей WordPress

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

Почему важно удалять неактивных пользователей WordPress

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

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

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

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

Один из популярных плагинов для отслеживания активности — Expert Review, который позволяет анализировать поведение пользователей и отслеживать их активность.

Как добавить автоматическое удаление неактивных пользователей с помощью кода

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

function wpstart_update_last_login( $user_login, $user ) {
    update_user_meta( $user->ID, 'wpstart_last_login', current_time('timestamp') );
}
add_action( 'wp_login', 'wpstart_update_last_login', 10, 2 );

Теперь создадим функцию, которая будет искать и удалять пользователей, неактивных более 180 дней:

function wpstart_delete_inactive_users() {
    $args = array(
        'meta_key' => 'wpstart_last_login',
        'meta_value' => strtotime('-180 days'),
        'meta_compare' => '<',
        'fields' => 'ID',
        'number' => 100,
    );

    $inactive_users = get_users( $args );

    foreach ( $inactive_users as $user_id ) {
        require_once ABSPATH . 'wp-admin/includes/user.php';
        wp_delete_user( $user_id );
    }
}
add_action( 'wp_scheduled_delete_inactive_users', 'wpstart_delete_inactive_users' );

Чтобы запускать эту очистку автоматически, добавим планировщик задач WP-Cron:

function wpstart_schedule_inactive_users_cleanup() {
    if ( ! wp_next_scheduled( 'wp_scheduled_delete_inactive_users' ) ) {
        wp_schedule_event( time(), 'daily', 'wp_scheduled_delete_inactive_users' );
    }
}
add_action( 'wp', 'wpstart_schedule_inactive_users_cleanup' );

Пояснения к коду

  • wpstart_update_last_login обновляет мета поле с текущим временем при каждом входе пользователя.
  • wpstart_delete_inactive_users получает список пользователей, чей последний вход был более 180 дней назад, и удаляет их.
  • Планировщик задач запускает проверку раз в сутки.

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

Если вы не хотите писать код самостоятельно, можно воспользоваться готовыми решениями. Например:

  • Inactive User Deleter — простой плагин, который удаляет пользователей, не заходивших на сайт заданное количество дней.
  • WP-Optimize — комплексный плагин для оптимизации базы данных, который также позволяет управлять пользователями.
  • Clearfy Pro — содержит опции для очистки базы и удаления неактивных пользователей, а также множество инструментов для оптимизации WordPress.

Плюсы и минусы использования плагинов

Преимущество плагинов — простота настройки и отсутствие необходимости писать код. Минус — они могут влиять на производительность сайта и добавлять лишний функционал.

Если вы предпочитаете легковесное решение и полный контроль — лучше реализовать удаление через собственный код, как показано выше.

Как обезопасить процесс удаления пользователей

Удаление пользователей — операция необратимая, поэтому стоит предусмотреть меры безопасности:

  • Создавайте резервные копии базы данных перед запуском очистки.
  • Перед удалением отправляйте уведомление пользователям с предупреждением.
  • Исключайте из удаления администраторов и важных ролей.
  • Проверяйте работу скрипта на тестовом сайте перед внедрением в продакшен.

Пример исключения администраторов из удаления

function wpstart_delete_inactive_users() {
    $args = array(
        'meta_key' => 'wpstart_last_login',
        'meta_value' => strtotime('-180 days'),
        'meta_compare' => '<',
        'fields' => 'ID',
        'number' => 100,
        'role__not_in' => array('administrator'),
    );

    $inactive_users = get_users( $args );

    foreach ( $inactive_users as $user_id ) {
        require_once ABSPATH . 'wp-admin/includes/user.php';
        wp_delete_user( $user_id );
    }
}
Как создать автоматический импорт продуктов в WordPress из Excel файла
02.01.2026
Как избежать повторов контента в WordPress: практические методы и примеры кода
22.02.2026
Как разрешить отправку формы только авторизованным пользователям в WordPress
11.01.2026
Как удалить неиспользуемые теги в базе данных WordPress для оптимизации
06.12.2025
Как добавить автоматические оповещения в WordPress с помощью WPCommunity
19.02.2026