Как автоматически удалять пустые регистрации пользователей в WordPress

Диагностика проблемы: что такое пустая регистрация и как ее обнаружить

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

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

SELECT ID, user_login, user_email, user_registered FROM wp_users WHERE user_email = '' OR user_login = '' OR user_registered < '2023-01-01';

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

Пошаговое решение: автоматическое удаление пустых пользователей с помощью WP-Cron

1. Создайте функцию удаления пустых пользователей

function delete_empty_users() {
    global $wpdb;
    // Получаем ID пользователей без email или с пустым логином
    $user_ids = $wpdb->get_col(
        "SELECT ID FROM {$wpdb->users} WHERE user_email = '' OR user_login = ''"
    );
    if (empty($user_ids)) {
        return;
    }
    foreach ($user_ids as $user_id) {
        require_once ABSPATH . 'wp-admin/includes/user.php';
        wp_delete_user($user_id);
    }
}

2. Зарегистрируйте событие в WP-Cron

function schedule_empty_user_cleanup() {
    if (! wp_next_scheduled('empty_user_cleanup_hook')) {
        wp_schedule_event(time(), 'daily', 'empty_user_cleanup_hook');
    }
}
add_action('wp', 'schedule_empty_user_cleanup');
add_action('empty_user_cleanup_hook', 'delete_empty_users');

3. Размещение кода

Добавьте этот код в файл functions.php вашей дочерней темы или в отдельный плагин, чтобы не потерять изменения при обновлении.

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

  • Выполните запрос из раздела диагностики до и после запуска WP-Cron (обычно происходит при заходе на сайт или через системное задание).
  • Проверьте лог событий WP-Cron с помощью плагина WP Crontrol, убедитесь, что событие empty_user_cleanup_hook запускается.
  • Убедитесь, что пустые пользователи удалились из базы данных и не отображаются в админке WordPress (раздел "Пользователи").

Частые ошибки и как исправить

  • WP-Cron не запускается автоматически: На некоторых серверах WP-Cron может не работать из-за низкой посещаемости сайта. Решение: настроить системный cron на хостинге для вызова wp-cron.php напрямую.
  • Удаляются нужные пользователи: Проверьте условия выборки пользователей для удаления. Необходимо точно определить критерии пустой регистрации, например, не удалять пользователей с email, даже если логин кажется пустым.
  • Права доступа: Для вызова wp_delete_user() скрипт должен иметь соответствующие права (обычно это не проблема, если код выполняется от имени WordPress).
  • Кэширование: Если используется кэширование, обновите кэш после удаления пользователей для корректного отображения изменений.

Практические советы по безопасности и производительности

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

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

МетодПлюсыМинусы
Ручное удаление через SQLБыстро, без кодаРиск ошибок, требует навыков SQL, не автоматично
WP-Cron + PHP (код из статьи)Автоматизация, безопасное удаление с использованием API WordPressЗависит от корректной работы WP-Cron, требует базовых знаний PHP
Плагины очистки пользователейУдобство интерфейса, дополнительные функции (фильтры, отчеты)Нагрузка, возможность конфликтов, лишний код
Как удалить старые варианты товаров в WooCommerce без плагинов
19.05.2026
Автоматическое удаление завершённых заказов WooCommerce через PHP
05.06.2026
Как автоматизировать удаление неработающих шорткодов в WordPress
11.03.2026
Автоматическое удаление старого контента WordPress по дате публикации
09.06.2026
Как создать и настроить пользовательские роли и права в WordPress
26.01.2026