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

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

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

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

Удаление заблокированных аккаунтов позволяет:

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

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

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

  • Добавление пользовательского метаполя (user meta), например blocked или is_blocked;
  • Изменение роли пользователя на неактивную или кастомную, например blocked;
  • Отключение доступа через плагин безопасности, который хранит статусы в метаданных.

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

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

Для массового удаления заблокированных пользователей можно использовать WP_User_Query и функцию удаления пользователя WordPress wp_delete_user. Вот пример функции, которую можно добавить в файл functions.php вашей темы или в отдельный плагин:

function wpqa_delete_blocked_users() {
    $args = [
        'meta_key' => 'is_blocked',
        'meta_value' => '1',
        'number' => -1
    ];
    $user_query = new WP_User_Query($args);
    $blocked_users = $user_query->get_results();

    if (!empty($blocked_users)) {
        foreach ($blocked_users as $user) {
            wp_delete_user($user->ID);
        }
    }
}

// Запуск функции вручную, например, через хук admin_init или WP-CLI
// add_action('admin_init', 'wpqa_delete_blocked_users');

Эта функция находит всех пользователей с метаполем is_blocked равным 1 и удаляет их. Будьте осторожны — удаление пользователей необратимо, поэтому перед выполнением сделайте резервную копию базы данных.

Удаление пользователей по роли "заблокирован"

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

function wpqa_delete_blocked_role_users() {
    $blocked_users = get_users(['role' => 'blocked']);
    foreach ($blocked_users as $user) {
        wp_delete_user($user->ID);
    }
}

// add_action('admin_init', 'wpqa_delete_blocked_role_users');

Этот код находит всех пользователей с ролью blocked и удаляет их.

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

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

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

Для примера, Bulk Delete можно настроить так, чтобы периодически удалять пользователей с метаполем is_blocked = 1, что избавит вас от необходимости запускать код вручную.

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

Если на вашем сайте не используется метаполевая блокировка, вы можете добавить её самостоятельно. Для этого создадим функцию, которая ставит метаполе is_blocked:

function wpqa_block_user($user_id) {
    update_user_meta($user_id, 'is_blocked', '1');
}

// Использование
// wpqa_block_user(123); // где 123 - ID пользователя

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

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

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

  • Делайте резервные копии базы данных;
  • Проверяйте критерии поиска заблокированных пользователей;
  • Используйте тестовую среду для проверки кода;
  • Автоматизируйте процесс с помощью проверенных плагинов.

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

WooCommerce: автоматическое удаление неоплаченных заказов через определённое время
13.07.2026
Как изменить стоимость товара в WooCommerce в зависимости от пользователя
04.05.2026
Как избежать проблем с кешированием в WordPress: практические советы и решения
02.02.2026
Оптимизация изображений в WordPress для ускорения сайта
24.12.2025
Как удалить все заказы WooCommerce одним кодом
19.05.2026