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

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

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

Неактивные пользователи — это аккаунты, которые не заходили на сайт в течение длительного времени (например, 6 месяцев или год). Удаление таких пользователей помогает:

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

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

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

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

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

Чтобы отслеживать дату последнего входа, добавим функцию, которая будет сохранять мета-поле с временем логина пользователя:

function wpset_update_last_login( $login, $user ) {
    update_user_meta( $user->ID, 'wpset_last_login', current_time('mysql') );
}
add_action( 'wp_login', 'wpset_update_last_login', 10, 2 );

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

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

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

function wpset_delete_inactive_users( $days = 180 ) {
    $args = array(
        'meta_key'     => 'wpset_last_login',
        'meta_value'   => date('Y-m-d H:i:s', strtotime('-' . $days . ' days')),
        'meta_compare' => '<',
        'fields'       => 'ID',
        'number'       => 1000,
    );

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

    if ( !empty( $users ) ) {
        foreach ( $users as $user_id ) {
            // Не удаляем администраторов
            if ( in_array( 'administrator', get_userdata( $user_id )->roles ) ) {
                continue;
            }
            wp_delete_user( $user_id );
        }
    }
}

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

Как запустить удаление

Для запуска функции удаления можно добавить админский пункт меню или вызвать её вручную, например, через WP-CLI или временно из functions.php:

// Для запуска один раз
add_action( 'admin_init', function() {
    if ( current_user_can( 'administrator' ) ) {
        wpset_delete_inactive_users( 180 );
    }
} );

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

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

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

  • Inactive User Deleter — позволяет автоматически удалять неактивных пользователей по заданным критериям.
  • WP User Manager — расширенный менеджер пользователей с возможностью отслеживать активность.
  • Clearfy Pro с удалением неактивных пользователей — удобный инструмент для оптимизации сайта и управления пользователями.

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

Особенности и подводные камни при удалении пользователей

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

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

Пример удаления с переназначением автора

function wpset_delete_inactive_users_with_reassign( $days = 180, $reassign_user_id = 1 ) {
    $args = array(
        'meta_key'     => 'wpset_last_login',
        'meta_value'   => date('Y-m-d H:i:s', strtotime('-' . $days . ' days')),
        'meta_compare' => '<',
        'fields'       => 'ID',
        'number'       => 1000,
    );

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

    if ( !empty( $users ) ) {
        foreach ( $users as $user_id ) {
            if ( in_array( 'administrator', get_userdata( $user_id )->roles ) ) {
                continue;
            }
            wp_delete_user( $user_id, $reassign_user_id );
        }
    }
}

Здесь все записи удаляемого пользователя будут переназначены пользователю с ID 1.

Как удалить неиспользуемые поля в WordPress
20.01.2026
WooCommerce: как разрешить оставлять отзывы только покупателям
29.05.2026
Как создать автоматические ответы на комментарии в WordPress
30.12.2025
Как удалить заблокированные сессии пользователей в WordPress через код
11.03.2026
WooCommerce: автоматическое отключение неактивных вариаций товаров
25.05.2026