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

|

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

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

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

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

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

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

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

Для этого используем хук wp_login, чтобы при каждом входе обновлять мета-поле пользователя с текущей датой:

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

Этот код нужно добавить в файл functions.php вашей темы или в отдельный плагин.

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

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

Пример кода функции удаление неактивных пользователей

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

    $args = array(
        'meta_key' => 'wpdetect_last_login',
        'meta_value' => $date_threshold,
        'meta_compare' => '<',
        'fields' => 'ID',
        'number' => 100,
    );

    $user_query = new WP_User_Query( $args );
    if ( ! empty( $user_query->get_results() ) ) {
        foreach ( $user_query->get_results() as $user_id ) {
            // Исключаем администраторов
            if ( ! user_can( $user_id, 'administrator' ) ) {
                wp_delete_user( $user_id );
            }
        }
    }
}

// Регистрируем событие в WP-Cron
if ( ! wp_next_scheduled( 'wpdetect_daily_inactive_user_cleanup' ) ) {
    wp_schedule_event( time(), 'daily', 'wpdetect_daily_inactive_user_cleanup' );
}
add_action( 'wpdetect_daily_inactive_user_cleanup', 'wpdetect_delete_inactive_users' );

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

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

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

Для интеграции с Inactive User Deleter можно настроить период очистки и роли пользователей.

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

Прежде чем удалять пользователей, особенно автоматически, рекомендуем сделать резервную копию базы данных. Также стоит подумать о том, что делать с контентом пользователей — постами, комментариями и т.п. По умолчанию функция wp_delete_user() позволяет передать ID пользователя, которому будут переданы посты удаляемого пользователя.

Например, чтобы передать посты другому пользователю, измените функцию так:

wp_delete_user( $user_id, $new_owner_id );

Где $new_owner_id — ID пользователя, которому будут переданы посты.

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

Удаление неактивных пользователей — необходимая часть поддержания безопасности и производительности сайта на WordPress. Автоматизация процесса с помощью WP-Cron и пользовательских функций позволяет экономить время и избегать накопления устаревших данных.

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

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

Автоматический сбор логов и анализ безопасности WordPress
04.01.2026
Обслуживание REST API WordPress — практические советы и примеры кода
29.11.2025
Как автоматизировать обновление подсказок в WordPress: практическое руководство
19.02.2026
Как создать собственный шорткод с параметрами в WordPress
16.11.2025
Как использовать WP-CLI для автоматизации задач в WordPress
19.01.2026
×
Quizle
Привлекайте, конвертируйте, зарабатывайте!
-15%

на премиум плагин WordPress

Получить скидку ⋙