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

|

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

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

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

Автоматизация процесса удаления помогает не забывать эту задачу и минимизировать ручной труд.

Как определить неактивного пользователя WordPress

Ключевой вопрос — по каким критериям считать пользователя неактивным. Обычно используют следующие показатели:

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

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

Для начала добавим в WordPress хранение времени последнего входа пользователя. Это позволит потом фильтровать неактивных.

function wppremium_update_last_login( $login, $user ) {
    update_user_meta( $user->ID, 'wppremium_last_login', current_time( 'timestamp' ) );
}
add_action( 'wp_login', 'wppremium_update_last_login', 10, 2 );

Этот код добавляет мета-поле wppremium_last_login с отметкой времени последнего входа пользователя. Теперь можно использовать этот параметр для фильтрации.

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

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

function wppremium_delete_inactive_users() {
    $threshold = strtotime( '-6 months' );
    $args = array(
        'meta_key' => 'wppremium_last_login',
        'meta_value' => $threshold,
        'meta_compare' => '<',
        'fields' => 'ID',
        'number' => 50 // ограничение на удаление за один запуск
    );

    $inactive_users = get_users( $args );

    foreach ( $inactive_users as $user_id ) {
        // Не удаляем админов
        if ( user_can( $user_id, 'administrator' ) ) {
            continue;
        }
        wp_delete_user( $user_id );
    }
}

// Добавляем событие в WP-Cron, если оно не запланировано
if ( ! wp_next_scheduled( 'wppremium_cron_delete_inactive_users' ) ) {
    wp_schedule_event( time(), 'daily', 'wppremium_cron_delete_inactive_users' );
}

add_action( 'wppremium_cron_delete_inactive_users', 'wppremium_delete_inactive_users' );

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

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

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

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

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

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

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

Расширение функционала: отправка уведомлений неактивным пользователям

Для корректного UX можно перед удалением уведомлять пользователей о предстоящем удалении их аккаунта. Для этого добавим функцию отправки email за 7 дней до удаления.

function wppremium_notify_inactive_users() {
    $threshold_notify = strtotime( '-6 months +7 days' );
    $args = array(
        'meta_key' => 'wppremium_last_login',
        'meta_value' => $threshold_notify,
        'meta_compare' => '<',
        'fields' => 'ID',
        'number' => 50
    );

    $users = get_users( $args );

    foreach ( $users as $user_id ) {
        $user = get_userdata( $user_id );
        $last_notified = get_user_meta( $user_id, 'wppremium_last_notification', true );
        if ( ! $last_notified ) {
            wp_mail( $user->user_email, 'Уведомление об удалении аккаунта', 'Ваш аккаунт будет удален через 7 дней из-за неактивности.' );
            update_user_meta( $user_id, 'wppremium_last_notification', current_time( 'timestamp' ) );
        }
    }
}
add_action( 'wppremium_cron_notify_inactive_users', 'wppremium_notify_inactive_users' );

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

Теперь два процесса — уведомление и удаление — работают параллельно, что улучшает взаимодействие с пользователями.

Итоги и рекомендации

Автоматическое удаление неактивных пользователей — важный элемент поддержки WordPress-сайта. Используйте хранение даты последнего входа, периодическую проверку и удаление через WP-Cron. При необходимости добавляйте уведомления и исключения по ролям. Если не хотите писать код, рассмотрите плагины вроде Clearfy Pro, которые упростят задачу.

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

WooCommerce: как изменить цену товара в зависимости от роли пользователя
25.06.2026
Как создать многоуровневый фильтр продуктов в WordPress без плагинов
11.01.2026
WooCommerce: как настроить отправку писем при массовом изменении статуса заказов
06.05.2026
Как удалить или изменить URL записи WordPress без редиректа и ошибок 404
05.12.2025
WooCommerce: автоматическое удаление неактивных корзин и заказов
15.05.2026
×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше