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

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

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

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

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

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

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

  • Пользователи, которые не заходили на сайт более определенного времени (например, 6 месяцев или год).
  • Пользователи с ролью «Подписчик» или «Гость», которые никогда не публиковали контент.
  • Неактивные аккаунты с пустыми профилями или без активности.
  • Спам-аккаунты, зарегистрированные через формы с недостаточной защитой.

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

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

Рассмотрим пример функции с префиксом wpguest_, которая удаляет пользователей, не заходивших на сайт более 180 дней. Для этого нам понадобится дополнительное поле user_last_login, которое нужно записывать при каждом входе пользователя. Можно использовать стандартное событие wp_login для обновления метаданных.

Шаг 1. Сохраняем дату последнего входа пользователя

add_action('wp_login', 'wpguest_update_last_login', 10, 2);
function wpguest_update_last_login( $user_login, $user ) {
    update_user_meta( $user->ID, 'user_last_login', current_time('timestamp') );
}

Этот код обновляет мета-поле user_last_login с текущим временем при каждой авторизации пользователя.

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

function wpguest_delete_inactive_users( $days = 180 ) {
    $args = [
        'meta_key' => 'user_last_login',
        'meta_compare' => '<',
        'meta_value' => strtotime("-{$days} days"),
        'fields' => 'ID',
        'number' => -1,
        'exclude' => [1], // исключаем администратора с ID 1
    ];

    $user_query = new WP_User_Query( $args );
    $users_to_delete = $user_query->get_results();

    if ( !empty( $users_to_delete ) ) {
        foreach ( $users_to_delete as $user_id ) {
            wp_delete_user( $user_id );
        }
    }
}

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

Шаг 3. Автоматизация через крон-задачу WordPress

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

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

add_action( 'wpguest_daily_delete_inactive_users', 'wpguest_delete_inactive_users' );

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

Использование плагинов для автоматизации

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

Другой вариант — плагин Inactive User Deleter, который автоматически удаляет пользователей на основании их неактивности. В нем можно задать временной промежуток и роли пользователей для удаления.

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

Дополнительные советы по безопасности и резервному копированию

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

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

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

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

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

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

Как автоматизировать создание и удаление черновиков в WordPress
12.03.2026
Автоматизация создания резервных копий WordPress без плагинов
06.12.2025
Как решить ошибку 429 в WooCommerce при автообновлении корзины
22.04.2026
Как избежать 404 ошибок при изменении URL в WordPress
27.06.2026
Как удалить пустые вариативные товары WooCommerce с помощью кода
30.05.2026