Как удалить удалённые пользователи WordPress и очистить базу данных

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

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

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

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

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

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

Если вы знакомы с работой с базой данных напрямую, можно выполнить SQL-запросы для выявления и удаления ненужных пользователей. В WordPress информация о пользователях хранится в таблицах wp_users и wp_usermeta. Для начала полезно определить, какие пользователи считаются «удалёнными» или неактивными.

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

SELECT u.ID, u.user_login FROM wp_users u
LEFT JOIN wp_usermeta m ON u.ID = m.user_id AND m.meta_key = 'wp_capabilities'
WHERE m.user_id IS NULL;

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

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

DELETE u, m FROM wp_users u
LEFT JOIN wp_usermeta m ON u.ID = m.user_id
WHERE u.ID IN (
    SELECT user_id FROM (
        SELECT u2.ID as user_id FROM wp_users u2
        LEFT JOIN wp_usermeta m2 ON u2.ID = m2.user_id AND m2.meta_key = 'wp_capabilities'
        WHERE m2.user_id IS NULL
    ) AS temp
);

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

Использование PHP-кода для удаления удалённых пользователей в WordPress

Если вы хотите интегрировать удаление в функционал сайта, можно написать функцию на PHP, которую затем вызвать в админ-панели или через WP-CLI. Ниже пример функции wpconfig_delete_orphan_users(), которая удаляет пользователей без ролей.

function wpconfig_delete_orphan_users() {
    global $wpdb;
    
    // Получаем ID пользователей без ролей
    $user_ids = $wpdb->get_col(
        "SELECT u.ID FROM {$wpdb->users} u
        LEFT JOIN {$wpdb->usermeta} m ON u.ID = m.user_id AND m.meta_key = '{$wpdb->prefix}capabilities'
        WHERE m.user_id IS NULL"
    );
    
    if (empty($user_ids)) {
        return 'Нет пользователей без ролей для удаления.';
    }
    
    foreach ($user_ids as $user_id) {
        require_once ABSPATH . 'wp-admin/includes/user.php';
        wp_delete_user($user_id);
    }
    
    return count($user_ids) . ' пользователей без ролей удалено.';
}

// Использование: echo wpconfig_delete_orphan_users();

Функция использует API WordPress для корректного удаления пользователей и всех связанных данных.

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

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

  • Bulk Delete — позволяет массово удалять пользователей по различным критериям, включая неактивность и отсутствие ролей. Поддерживает фильтры по дате и ролям. Официальная страница плагина.
  • Inactive User Deleter — удаляет пользователей, которые не заходили на сайт длительное время. Можно настроить порог неактивности и исключить администраторов.
  • WP User Manager — расширенный менеджер пользователей с возможностью фильтрации и удаления.

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

  • Установите и активируйте плагин.
  • Перейдите в Bulk Delete > Delete Users.
  • Выберите фильтр «Users Without Role».
  • Настройте дополнительные условия, если нужно.
  • Запустите удаление.

Как очистить метаданные и связанные данные удалённых пользователей

Удаление пользователя через стандартные функции WordPress удаляет его записи из таблицы wp_users и метаданные из wp_usermeta, но могут оставаться другие данные, например:

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

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

function wpconfig_delete_user_comments($user_id) {
    global $wpdb;
    $comments = $wpdb->get_col($wpdb->prepare("SELECT comment_ID FROM {$wpdb->comments} WHERE user_id = %d", $user_id));
    foreach ($comments as $comment_id) {
        wp_delete_comment($comment_id, true);
    }
}

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

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

При удалении пользователей соблюдайте следующие рекомендации:

  • Всегда делайте резервную копию базы данных перед выполнением массовых операций.
  • Проверяйте права доступа: удаление пользователей доступно только администраторам.
  • Тестируйте код на тестовом сайте, чтобы избежать потери важных данных.
  • Используйте API WordPress для удаления, чтобы корректно обрабатывались все связанные данные.

Вывод

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

Для удобства управления пользователями советуем рассмотреть плагин Bulk Delete от WPShop с удобным интерфейсом и широкими возможностями фильтрации.

Как создать собственный REST API endpoint в WordPress: подробное руководство
08.11.2025
Как установить и настроить WPConfig Logger для логирования ошибок в WordPress
27.02.2026
Как автоматизировать очистку неиспользуемых переходных в WordPress
05.02.2026
Как удалить доверие в WordPress: защита сайта и улучшение безопасности
20.05.2025
Как создать автозапуск функций в WordPress без использования WP-Cron
08.01.2026