Что такое удалённые пользователи в WordPress и почему их нужно полностью удалять
В WordPress при удалении пользователя можно выбрать опцию «Удалить» или «Прикрепить содержимое к другому пользователю». Однако при этом данные пользователя, связанные с учетной записью, могут сохраняться в базе данных. Особенно если пользователь был удалён через панель администратора, но с опцией, которая не удаляет все связанные записи, метаданные и настройки. Такие «удалённые» пользователи фактически остаются в базе как анонимные или с ограниченными правами, но их данные могут занимать место и потенциально создавать риски безопасности.
Полное удаление удалённых пользователей полезно для:
- Очистки базы данных от ненужных записей и метаданных
- Уменьшения размера базы и ускорения работы сайта
- Повышения безопасности за счёт удаления устаревших учетных записей
- Избежания конфликтов при миграциях и обновлениях
В этой статье мы подробно рассмотрим, как безопасно и безошибочно удалить всех удалённых пользователей в WordPress, используя как плагины, так и кастомный код.
Проверка и поиск удалённых пользователей: WPID методы и плагины
В WordPress удалённые пользователи могут оставаться в таблице wp_users с определёнными признаками. Обычно у них нет логина или email, или в метаданных есть флаг удаления. Для начала нужно проверить, есть ли такие записи в базе.
Для проверки удалённых пользователей можно использовать SQL-запрос напрямую в phpMyAdmin или через плагин «WP Data Access»:
SELECT * FROM wp_users WHERE user_login = '' OR user_email = '';Если вы нашли такие записи, значит в базе есть пользователи, которые не отображаются в админке, но занимают место.
Также существуют плагины для управления пользователями, которые могут показать скрытых или удалённых пользователей. Например:
- WP Bulk Delete — позволяет массово удалять пользователей по разным параметрам, включая неактивных или без активности
- User Cleaner — плагин для очистки базы от неиспользуемых пользователей и данных
Однако не все плагины корректно работают с удалёнными пользователями, поэтому часто приходится писать кастомный код, чтобы полностью убрать их.
Кастомное удаление удалённых пользователей: пример кода WPID
Для полного удаления удалённых пользователей с базы данных можно использовать следующий пример функции. Она ищет пользователей без логина и email, удаляет их из таблицы wp_users и связанные метаданные из wp_usermeta.
function wpid_delete_removed_users() {
global $wpdb;
// Получаем ID пользователей без логина или email
$user_ids = $wpdb->get_col("SELECT ID FROM {$wpdb->users} WHERE user_login = '' OR user_email = ''");
if (empty($user_ids)) {
return 'Удалённых пользователей не найдено';
}
foreach ($user_ids as $user_id) {
// Удаляем метаданные
$wpdb->delete($wpdb->usermeta, ['user_id' => $user_id]);
// Удаляем пользователя
$wpdb->delete($wpdb->users, ['ID' => $user_id]);
}
return count($user_ids) . ' удалённых пользователей успешно удалены';
}Эту функцию можно вызвать из консоли WP-CLI, добавить в отдельный файл плагина или через хук в админке. Она полностью очищает базу от «зомби»-пользователей.
Запуск функции через WP-CLI
Чтобы быстро очистить базу, можно зарегистрировать команду WP-CLI:
if ( defined('WP_CLI') && WP_CLI ) {
WP_CLI::add_command('wpid-clean-users', function() {
$result = wpid_delete_removed_users();
WP_CLI::success($result);
});
}После этого в консоли достаточно выполнить wp wpid-clean-users для очистки.
Как избежать появления удалённых пользователей в будущем
Чтобы не допускать накопления удалённых пользователей, рекомендуется:
- При удалении пользователя выбирать опцию переназначения контента другому пользователю
- Использовать плагины для управления пользователями с возможностью полного удаления записи, например, Advanced Database Cleaner
- Регулярно проверять базу на предмет «пустых» пользователей с помощью SQL-запросов или плагинов
- Хранить резервные копии базы перед массовыми удалениями
Также можно автоматизировать процесс, создав cron-задачу с вызовом функции wpid_delete_removed_users раз в месяц для очистки базы.
Выводы и рекомендации по безопасности и оптимизации WPID
Удалённые пользователи — это частая проблема, которая незаметно раздувает базу данных и снижает производительность сайта. Их удаление — важная часть технического обслуживания WordPress.
Комбинация SQL-проверок, использования специализированных плагинов и кастомных функций позволяет безопасно и эффективно очищать базу от таких записей. Для разработчиков и администраторов важно понимать, как эти пользователи выглядят в базе и как их правильно удалять без потери данных.
Рекомендуем всегда тестировать удаление на тестовом сайте и делать бэкапы. При грамотном подходе вы заметите улучшение в скорости работы сайта и уменьшение размера базы данных.