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

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

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

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

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

Удалять пользователей вручную неудобно и рискованно. Лучше автоматизировать процесс, чтобы удалять аккаунты, не проявлявшие активности, например, за последние 6 месяцев или год.

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

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

Добавляем хранение времени последнего входа

С помощью следующего кода можно сохранить мета-поле с датой последнего входа пользователя:

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

Этот код нужно добавить в файл functions.php вашей темы или в плагин с пользовательскими функциями. Теперь при каждом входе будет обновляться дата в поле wplab_last_login.

Функция для удаления неактивных пользователей

Далее создадим функцию, которая удалит пользователей, не заходивших на сайт дольше заданного периода (например, 180 дней):

function wplab_delete_inactive_users($days = 180) {
    $date_threshold = date('Y-m-d H:i:s', strtotime('-' . intval($days) . ' days'));

    $args = [
        'meta_key' => 'wplab_last_login',
        'meta_value' => $date_threshold,
        'meta_compare' => '<=',
        'fields' => ['ID'],
        'number' => -1,
    ];
    $user_query = new WP_User_Query($args);

    $users_to_delete = $user_query->get_results();
    if (empty($users_to_delete)) {
        return 0;
    }

    $deleted_count = 0;
    foreach ($users_to_delete as $user) {
        // Исключаем администраторов
        if (in_array('administrator', $user->roles)) {
            continue;
        }
        wp_delete_user($user->ID);
        $deleted_count++;
    }
    return $deleted_count;
}

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

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

Для запуска удаления достаточно вызвать функцию wplab_delete_inactive_users() с нужным числом дней, например:

echo 'Удалено пользователей: ' . wplab_delete_inactive_users(180);

Для автоматизации можно использовать WP-Cron, чтобы запускать очистку, например, раз в месяц:

if (!wp_next_scheduled('wplab_cron_delete_inactive_users')) {
    wp_schedule_event(time(), 'monthly', 'wplab_cron_delete_inactive_users');
}

add_action('wplab_cron_delete_inactive_users', function() {
    wplab_delete_inactive_users(180);
});
<

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

Полезные плагины для управления неактивными пользователями

Если вы предпочитаете готовые решения, обратите внимание на следующие плагины:

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

Плагины удобны, если вы не хотите писать код и хотите полноценный интерфейс для управления.

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

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

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

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

Как интегрировать очистку пользователей с WPRemark для контроля качества

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

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

Пример дополнительной проверки активности по комментариям

function wplab_is_user_active_by_comments($user_id, $days = 180) {
    global $wpdb;
    $date_threshold = date('Y-m-d H:i:s', strtotime('-' . intval($days) . ' days'));
    $count = $wpdb->get_var($wpdb->prepare(
        "SELECT COUNT(*) FROM {$wpdb->comments} WHERE user_id = %d AND comment_date > %s",
        $user_id, $date_threshold
    ));
    return $count > 0;
}

После этого в основной функции можно добавить проверку:

if (wplab_is_user_active_by_comments($user->ID, 180)) {
    continue; // пользователь активен по комментариям
}

Выводы

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

Автоматическое удаление отменённых заказов WooCommerce для оптимизации базы данных
16.05.2026
Создание и использование пользовательских атрибутов data в WordPress
29.01.2026
Как использовать WPCommunity для создания форума на WordPress
17.03.2026
Как изменить URL страницы автора в WordPress без плагинов
20.01.2026
Установка и настройка WPRemark для автоматического контроля качества контента в WordPress
20.03.2026