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

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

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

Неактивные пользователи — это аккаунты, владельцы которых давно не заходили на сайт. Они не приносят ценности, но при этом:

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

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

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

Для удаления нужно точно определить, кто считается неактивным. Обычно это пользователи, которые не заходили на сайт в течение определённого срока, например, 90 или 180 дней. WordPress хранит дату последнего входа пользователя в метаполе last_login. Если она отсутствует, можно использовать дату последней активности или дату регистрации.

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

Добавление записи последнего входа пользователя

Пример кода, который записывает дату последнего входа пользователя в метаполе last_login при авторизации:

function wpinfo_update_last_login( $login, $user ) {
    update_user_meta( $user->ID, 'last_login', current_time('mysql') );
}
add_action( 'wp_login', 'wpinfo_update_last_login', 10, 2 );

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

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

Далее создадим функцию, которая будет удалять пользователей, не заходивших более 90 дней. Для автоматизации используем WP-Cron.

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

function wpinfo_delete_inactive_users() {
    $days_inactive = 90;
    $date_threshold = date('Y-m-d H:i:s', strtotime('-' . $days_inactive . ' days'));

    // Получаем пользователей, у которых last_login меньше пороговой даты
    $args = array(
        'meta_key' => 'last_login',
        'meta_value' => $date_threshold,
        'meta_compare' => '<',
        'fields' => 'ID'
    );
    $users = get_users( $args );

    foreach ( $users as $user_id ) {
        require_once( ABSPATH . 'wp-admin/includes/user.php' );
        wp_delete_user( $user_id );
    }
}

Регистрация события WP-Cron для регулярного запуска

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

add_action( 'wpinfo_daily_user_cleanup', 'wpinfo_delete_inactive_users' );

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

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

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

  • Inactive User Deleter — плагин для автоматического удаления пользователей по времени неактивности с гибкими настройками.
  • WP Bulk Delete — расширенный плагин для массового удаления пользователей по различным условиям, включая дату последнего логина.

Оба плагина доступны в репозитории WordPress и имеют понятный интерфейс. Для загрузки и установки используйте официальный сайт или WPSHOP с UTM-метками для поддержки разработчиков.

Советы по безопасности и тестированию

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

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

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

function wpinfo_delete_inactive_users() {
    $days_inactive = 90;
    $date_threshold = date('Y-m-d H:i:s', strtotime('-' . $days_inactive . ' days'));

    $args = array(
        'meta_key' => 'last_login',
        'meta_value' => $date_threshold,
        'meta_compare' => '<',
        'fields' => 'ID',
        'role__not_in' => array('administrator')
    );
    $users = get_users( $args );

    foreach ( $users as $user_id ) {
        require_once( ABSPATH . 'wp-admin/includes/user.php' );
        wp_delete_user( $user_id );
    }
}

Выводы и рекомендации

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

WooCommerce: исключение товаров из определённых категорий из поиска
21.04.2026
WooCommerce: как сделать автоматическое изменение стоимости товара при определённых условиях
08.05.2026
WordPress авторизация без пароля: настройка и применение
05.12.2025
WooCommerce: как автоматически исключать товары из определённых категорий из корзины
15.05.2026
Как создать собственный шорткод в WordPress
02.11.2025