WPExperts

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

В процессе эксплуатации сайта на 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 поможет не забывать про очистку. Внедрите отслеживание последнего входа, чтобы точно знать, кого нужно удалить, и всегда делайте резервные копии перед действиями.

×
до 3225₽

Продавай темы и плагины WordPress!

Лови с каждой продажи

Начать ⋙