В процессе эксплуатации сайта на WordPress количество пользователей может существенно увеличиваться, включая неактивных, удалённых или заблокированных пользователей, которые остаются в базе данных. Это может влиять на производительность, безопасность и удобство администрирования. В этой статье мы рассмотрим, как найти и удалить таких пользователей программно и с помощью плагинов, а также как автоматизировать этот процесс.
Почему важно удалять неактивных и удалённых пользователей в WordPress
Даже если пользователь официально удалён через панель администратора, иногда остаются записи в базе данных, связанные с ним, или же пользователи временно заблокированы без удаления. Это приводит к:
- Росту базы данных и замедлению работы сайта;
- Увеличению нагрузки на сервер;
- Потенциальным уязвимостям безопасности;
- Неудобству в управлении списком пользователей.
Удаление таких пользователей помогает поддерживать чистоту данных и улучшать общую производительность сайта.
Как найти и удалить удалённых пользователей через SQL-запрос
Иногда в базе данных остаются следы пользователей, даже если они удалены из интерфейса WordPress. Для поиска таких записей можно использовать SQL-запросы напрямую в базе данных через phpMyAdmin или другой инструмент.
Например, чтобы найти пользователей, у которых отсутствует связанная мета-информация, можно использовать запрос:
SELECT u.ID, u.user_login FROM wp_users u LEFT JOIN wp_usermeta m ON u.ID = m.user_id WHERE m.user_id IS NULL;Этот запрос покажет пользователей без мета-данных, которые, возможно, являются «зависшими» или неполными записями.
Для удаления таких пользователей используйте запрос:
DELETE FROM wp_users WHERE ID IN (SELECT u.ID FROM (SELECT u.ID FROM wp_users u LEFT JOIN wp_usermeta m ON u.ID = m.user_id WHERE m.user_id IS NULL) AS temp);<Важно сделать резервную копию базы данных перед выполнением таких операций.
Использование WP-функций для удаления пользователей по определённым критериям
Для безопасного удаления пользователей через код в WordPress лучше использовать встроенную функцию wp_delete_user(). Рассмотрим пример функции, которая удаляет пользователей, которые долго не заходили на сайт (например, более 1 года):
function wpexperts_delete_inactive_users( $days = 365 ) {
$date_threshold = date('Y-m-d H:i:s', strtotime('-' . intval($days) . ' days'));
$args = [
'meta_key' => 'last_login',
'meta_value' => $date_threshold,
'meta_compare' => '<=',
'fields' => 'ID',
'number' => -1,
];
$user_query = new WP_User_Query( $args );
if ( ! empty( $user_query->results ) ) {
foreach ( $user_query->results as $user_id ) {
wp_delete_user( $user_id );
}
}
}Эта функция предполагает, что у вас есть мета-поле last_login, где хранится дата последнего входа пользователя. Если такого поля нет, его можно добавить с помощью плагина или собственного кода.
Как добавить отслеживание последнего входа пользователя
Для записи даты последнего входа можно использовать хук wp_login:
function wpexperts_update_last_login( $user_login, $user ) {
update_user_meta( $user->ID, 'last_login', current_time('mysql') );
}
add_action( 'wp_login', 'wpexperts_update_last_login', 10, 2 );С этим кодом у каждого пользователя будет актуальная дата входа, что поможет в дальнейшем фильтровать неактивных.
Плагины для управления и удаления неактивных пользователей
Если вы не хотите писать код, можно использовать плагины, которые облегчают управление пользователями:
- Inactive User Deleter — позволяет автоматически удалять пользователей, неактивных заданное время. Можно задать разные условия и исключения.
- WP Bulk Delete — мощный инструмент для массового удаления постов, пользователей и других данных с гибкими фильтрами.
- Clearfy Pro с модулями оптимизации пользователей — помогает находить и удалять неактивные аккаунты, а также очищать базу с учетом SEO и безопасности. Подробнее на официальном сайте.
Автоматизация удаления неактивных пользователей с WP Cron
Для регулярного удаления неактивных аккаунтов можно настроить WP Cron. Пример добавления задачи, которая будет запускать функцию удаления раз в неделю:
function wpexperts_schedule_user_cleanup() {
if ( ! wp_next_scheduled( 'wpexperts_weekly_user_cleanup' ) ) {
wp_schedule_event( time(), 'weekly', 'wpexperts_weekly_user_cleanup' );
}
}
add_action( 'wp', 'wpexperts_schedule_user_cleanup' );
add_action( 'wpexperts_weekly_user_cleanup', function() {
wpexperts_delete_inactive_users( 365 );
});Такой подход позволит не держать неактивных пользователей в базе и поддерживать сайт в хорошем состоянии.
Рекомендации по безопасности при удалении пользователей
При удалении пользователей важно учитывать следующие моменты:
- Обязательно делайте резервные копии базы данных перед массовыми операциями.
- Проверяйте, не связаны ли удаляемые пользователи с важным контентом (например, авторы публикаций).
- Используйте
wp_delete_user()вместо простого удаления из базы для корректного удаления всех связанных данных. - Если пользователь авторизован в системе через сторонние плагины, убедитесь, что удаление не нарушит работу этих плагинов.
Выполнение этих рекомендаций поможет избежать сбоев и потери данных.
Заключение
Удаление удалённых и неактивных пользователей — важная задача для поддержания производительности и безопасности сайта на WordPress. Используйте SQL-запросы для диагностики, WP-функции для безопасного удаления и плагины для удобства. Автоматизация через WP Cron поможет не забывать про очистку. Внедрите отслеживание последнего входа, чтобы точно знать, кого нужно удалить, и всегда делайте резервные копии перед действиями.