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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

function wpcore_delete_inactive_users( $months = 6 ) {
    $date_threshold = date('Y-m-d H:i:s', strtotime("-" . intval($months) . " months"));

    $args = array(
        'meta_key' => 'wpcore_last_login',
        'meta_value' => $date_threshold,
        'meta_compare' => '<',
        'fields' => 'ID',
        'number' => -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 ) {
            // Исключаем администраторов
            if ( ! user_can( $user_id, 'administrator' ) ) {
                wp_delete_user( $user_id );
            }
        }
    }
}

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

Как запустить скрипт вручную и по расписанию

Для запуска вручную достаточно вызвать функцию:

wpcore_delete_inactive_users();

Чтобы запускать её автоматически, можно добавить задание Cron:

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

add_action( 'wpcore_daily_user_cleanup', function() {
    wpcore_delete_inactive_users( 6 );
} );

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

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

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

  • Inactive User Deleter — плагин, который автоматически удаляет пользователей, неактивных в течение заданного времени. Позволяет исключать роли и пользователей.
  • Last Login — с его помощью можно отслеживать дату последнего входа, а потом на основе этой информации очищать базу вручную или с помощью другого плагина.
  • WP User Manager — комплексный плагин для управления пользователями, в том числе с функциями очистки и фильтрации.

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

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

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

Также рекомендуется:

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

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

function wpcore_count_inactive_users( $months = 6 ) {
    $date_threshold = date('Y-m-d H:i:s', strtotime("-" . intval($months) . " months"));

    $args = array(
        'meta_key' => 'wpcore_last_login',
        'meta_value' => $date_threshold,
        'meta_compare' => '<',
        'fields' => 'ID',
        'number' => -1,
    );

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

    $count = 0;
    if ( !empty( $users ) ) {
        foreach ( $users as $user_id ) {
            if ( ! user_can( $user_id, 'administrator' ) ) {
                $count++;
            }
        }
    }
    return $count;
}

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

Вывод

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

Если хотите гибко управлять пользователями и автоматизировать процессы, советую обратить внимание на плагины из WPSHOP, которые могут расширить функционал вашего сайта.

WooCommerce: как автоматически удалять отменённые и завершённые заказы по дате без плагинов
12.05.2026
Как создать свой shortcode в WordPress
01.11.2025
WooCommerce: как автоматически удалять неактивные вариации товаров
22.05.2026
WooCommerce: оптимальные настройки для очистки базы от старого кода и данных
28.05.2026
Оптимизация загрузки постов в блоке с помощью AJAX в WordPress
15.12.2025