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

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

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

В крупных проектах с большим количеством пользователей регулярно накапливаются устаревшие учётные записи, которые уже не используются, но занимают место в базе данных и могут представлять риск безопасности. В частности, если у пользователя есть роль с ограниченным доступом (например, «черезашищенный» — роль с минимальными правами для временного доступа), то после истечения срока действия эта учётная запись должна быть удалена.

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

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

Как определить «старого» черезашищенного пользователя

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

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

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

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

Этот код добавляет мета-поле wpupdate_last_login с UNIX-временем последнего входа.

Критерий устаревания

Допустим, мы считаем пользователя устаревшим, если он не входил в систему более 180 дней (6 месяцев). Можно настроить это значение по своему усмотрению.

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

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

function wpupdate_delete_old_cheresashishenny_users() {
    $threshold = strtotime('-180 days');
    $args = array(
        'role' => 'cheresashishenny',
        'meta_query' => array(
            array(
                'key' => 'wpupdate_last_login',
                'value' => $threshold,
                'compare' => '<',
                'type' => 'NUMERIC'
            )
        ),
        'fields' => 'ID',
        'number' => 100
    );
    $user_query = new WP_User_Query($args);
    if (!empty($user_query->results)) {
        foreach ($user_query->results as $user_id) {
            wp_delete_user($user_id);
        }
    }
}

Этот код ищет до 100 пользователей с ролью cheresashishenny, которые не заходили в систему более 180 дней, и удаляет их.

Организация периодического запуска

Чтобы автоматизировать процесс, зарегистрируем событие WP-Cron, которое будет запускать функцию ежедневно.

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

add_action('wpupdate_daily_user_cleanup', 'wpupdate_delete_old_cheresashishenny_users');

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

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

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

function wpupdate_delete_old_cheresashishenny_users() {
    $threshold = strtotime('-180 days');
    $args = array(
        'role' => 'cheresashishenny',
        'meta_query' => array(
            array(
                'key' => 'wpupdate_last_login',
                'value' => $threshold,
                'compare' => '<',
                'type' => 'NUMERIC'
            )
        ),
        'fields' => 'ID',
        'number' => 100
    );
    $user_query = new WP_User_Query($args);
    if (!empty($user_query->results)) {
        foreach ($user_query->results as $user_id) {
            error_log('wpupdate: удалён пользователь ID ' . $user_id);
            wp_delete_user($user_id);
        }
    }
}

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

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

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

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

Но собственный код всегда даёт больше контроля и гибкости, особенно если у вас нестандартные роли или условия удаления.

Подведение итогов по автоматическому удалению пользователей в WordPress

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

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

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
Оптимизация загрузки шрифтов в WordPress: улучшение скорости и производительности
23.11.2025
Как удалить старые редакции постов в WordPress и оптимизировать базу данных
28.11.2025
Как использовать REST API в WordPress для создания собственных эндпоинтов
16.11.2025
WooCommerce: как исправить проблему с возвратом денег при отключённой AJAX-обработке
23.04.2026
Как добавить автоматическое удаление спама в комментариях WordPress
15.12.2025
×
WordPress
дай сайту суперсилу!

Скидки на топовые темы и плагины

Активировать суперсилу ⋙