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

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

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

Накопление заблокированных учётных записей может привести к ряду проблем:

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

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

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

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

  • Изменение роли пользователя на «Заблокированный» (кастомная роль).
  • Добавление мета-поля usermeta с признаком блокировки (например, blocked = true).
  • Установка статуса пользователя (user_status) в базе данных. По умолчанию это поле редко используется, но может быть задействовано плагинами.
  • Использование плагинов безопасности, которые сохраняют список заблокированных IP или пользователей.

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

Удаление заблокированных пользователей с помощью плагина WP Bulk Delete

Один из простых способов — использовать плагин WP Bulk Delete, который позволяет массово удалять пользователей по различным критериям.

После установки и активации плагина, перейдите в WP Bulk Delete > Delete Users.

Здесь можно указать условия для удаления, например:

  • Удалить по роли пользователя (если у вас есть роль «Заблокированный»)
  • Удалить по мета-данным (например, если в usermeta есть ключ blocked со значением true)

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

Пример кода для удаления пользователей с мета-ключом blocked = true

Если вы хотите сделать это программно, ниже пример функции, которая удалит всех пользователей с мета-ключом blocked равным true.

function wpaction_delete_blocked_users() {
    $args = array(
        'meta_key' => 'blocked',
        'meta_value' => 'true',
        'fields' => 'ID',
        'number' => 1000,
    );

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

    if (!empty($blocked_users)) {
        foreach ($blocked_users as $user_id) {
            require_once(ABSPATH . 'wp-admin/includes/user.php');
            wp_delete_user($user_id);
        }
    }
}

// Запуск удаления
wpaction_delete_blocked_users();

Этот код можно добавить в файл functions.php вашей темы или в отдельный плагин. Он найдёт всех пользователей с мета-данными blocked = true и удалит их.

Удаление пользователей с кастомной ролью «blocked»

Если заблокированные пользователи имеют отдельную роль, например «blocked», то их можно выбрать по роли и удалить:

function wpaction_delete_users_with_blocked_role() {
    $blocked_users = get_users(array(
        'role' => 'blocked',
        'fields' => 'ID',
        'number' => 1000,
    ));

    foreach ($blocked_users as $user_id) {
        require_once(ABSPATH . 'wp-admin/includes/user.php');
        wp_delete_user($user_id);
    }
}

// Запускаем функцию
wpaction_delete_users_with_blocked_role();

Обратите внимание, что роль «blocked» должна существовать и использоваться на вашем сайте.

Удаление заблокированных пользователей через SQL-запрос

Если вы уверены в структуре базы, можно использовать SQL-запрос напрямую. Например, если блокировка хранится в wp_usermeta с ключом blocked и значением 1:

DELETE u, um FROM wp_users u
LEFT JOIN wp_usermeta um ON u.ID = um.user_id
WHERE u.ID IN (
    SELECT user_id FROM wp_usermeta WHERE meta_key = 'blocked' AND meta_value = '1'
);

Внимание! Перед выполнением SQL-запросов всегда делайте бэкап базы данных. Некорректные запросы могут привести к потере данных.

Какие плагины помогут с управлением заблокированными пользователями

Кроме WP Bulk Delete, можно использовать следующие плагины:

  • User Spam Remover — автоматически удаляет спам-пользователей и заблокированные аккаунты.
  • Inactive User Deleter — удаляет пользователей, которые не заходили на сайт давно (можно настроить под блокированных).
  • Advanced Access Manager — для гибкого управления ролями и блокировкой пользователей.

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

Дополнительные рекомендации по безопасности и учётным записям

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

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

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

Как создать динамические таблицы в WordPress с помощью шорткода
17.12.2025
Как удалить заблокированные пользователи из WordPress
09.12.2025
Как избежать проблем с кэшированием в WordPress: практические решения
01.01.2026
Как настроить отложенный запуск задач в WordPress без плагинов
07.01.2026
Как создать мультиязычный сайт на WordPress без плагинов
17.01.2026