wpmoney.ru wordpress WP Money

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

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

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

Неактивные пользователи — это аккаунты, которые долгое время не заходили на сайт и не проявляли активности. Они могут быть созданы ботами, спамерами или реальными людьми, которые потеряли интерес к вашему проекту. Вот основные причины, почему стоит регулярно чистить базу:

  • Оптимизация базы данных. Чем меньше ненужных записей, тем быстрее работают запросы и меньше размер резервных копий.
  • Безопасность. Заброшенные аккаунты часто становятся целью взлома, что может привести к проникновению на сайт.
  • Удобство аналитики. Реальная статистика пользователей помогает принимать правильные решения по развитию сайта.

Удаление неактивных пользователей вручную — трудоёмкий процесс, особенно если база большая. Автоматизация этой задачи решит проблему эффективно.

Как определить неактивного пользователя: критерии и способы

Ключевой момент — установить критерии, по которым пользователь считается неактивным. Обычно это отсутствие входа на сайт в течение определённого периода времени. WordPress хранит дату последнего входа пользователя в метаданных, но по умолчанию это не включено. Для отслеживания даты последнего логина можно использовать плагин или добавить свой код.

Отслеживание даты последнего входа с помощью кода

Добавим в functions.php вашей темы или в отдельный плагин следующий код для записи времени последнего входа пользователя:

function wpmoney_record_last_login( $login, $user ) {
    update_user_meta( $user->ID, 'wpmoney_last_login', current_time('mysql') );
}
add_action( 'wp_login', 'wpmoney_record_last_login', 10, 2 );

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

Выбор периода неактивности

Часто используют период от 3 до 6 месяцев без входа как критерий неактивности. Вы можете настроить его под специфику вашего сайта.

Автоматическое удаление неактивных пользователей: пример функции

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

function wpmoney_delete_inactive_users() {
    $days_inactive = 180; // Период неактивности в днях
    $date_threshold = date('Y-m-d H:i:s', strtotime('-' . $days_inactive . ' days'));

    $args = array(
        'meta_key' => 'wpmoney_last_login',
        'meta_value' => $date_threshold,
        'meta_compare' => '<',
        'fields' => 'ID',
        'number' => -1,
    );

    $user_query = new WP_User_Query($args);
    $users_to_delete = $user_query->get_results();

    if (!empty($users_to_delete)) {
        foreach ($users_to_delete as $user_id) {
            if (!user_can($user_id, 'administrator')) { // Не удаляем админов
                wp_delete_user($user_id);
            }
        }
    }
}

Объясняем логику:

  • С помощью WP_User_Query получаем всех пользователей, у которых дата последнего входа меньше пороговой.
  • Исключаем администраторов, чтобы случайно не удалить важных пользователей.
  • Удаляем подходящих пользователей функцией wp_delete_user().

Как запускать функцию автоматического удаления

Для автоматизации удобно использовать WP-Cron. Добавим событие, которое будет запускать функцию раз в неделю.

function wpmoney_schedule_inactive_user_cleanup() {
    if (!wp_next_scheduled('wpmoney_inactive_user_cleanup_hook')) {
        wp_schedule_event(time(), 'weekly', 'wpmoney_inactive_user_cleanup_hook');
    }
}
add_action('wp', 'wpmoney_schedule_inactive_user_cleanup');

add_action('wpmoney_inactive_user_cleanup_hook', 'wpmoney_delete_inactive_users');

Теперь функция wpmoney_delete_inactive_users() будет вызываться автоматически каждую неделю.

Дополнительные рекомендации и безопасность

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

Также не забудьте сделать резервную копию базы данных перед внедрением автоматического удаления пользователей.

Если хотите более продвинутые возможности, обратите внимание на плагин Clearfy Pro — он помогает оптимизировать базу и управлять пользователями, включая удаление неактивных.

Итоги

Автоматическое удаление неактивных пользователей позволяет поддерживать базу данных WordPress в порядке, снижать нагрузку и повышать безопасность сайта. С помощью простого кода, который отслеживает дату последнего входа и запускается по расписанию, вы можете легко реализовать такую очистку. Обязательно учитывайте безопасность и уведомляйте пользователей заранее, чтобы избежать потери важных аккаунтов.

×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше