В крупных или активно развивающихся проектах на WordPress со временем накапливаются пользователи, которые давно не заходили в систему. Это создает лишнюю нагрузку на базу данных, а также может представлять риск с точки зрения безопасности. В этой статье разберем, как настроить автоматическое удаление неактивных пользователей по времени последнего входа с помощью готовых плагинов и кастомных решений на PHP.
Почему важно удалять неактивных пользователей в WordPress
Удаление неактивных пользователей помогает:
- Уменьшить размер базы данных и ускорить работу сайта.
- Снизить риски взлома через забытые аккаунты.
- Поддерживать актуальную аудиторию и качество пользовательской базы.
Особенно это актуально для сайтов с регистрацией и активным взаимодействием с пользователями, например, интернет-магазинов, форумов и обучающих платформ.
Как определить неактивных пользователей — критерии и особенности
Для удаления пользователей нужно определить, как считать их неактивными. Обычно используют следующие параметры:
- Дата последнего входа (last_login). Если пользователь не заходил, например, 6 месяцев или больше — он считается неактивным.
- Дата регистрации. Пользователи, которые никогда не заходили после регистрации, тоже могут быть удалены.
- Роль пользователя. Например, администраторов стоит исключать из автоматического удаления.
В WordPress по умолчанию не хранится дата последнего входа, поэтому ее нужно либо добавить вручную, либо использовать плагины, которые ее ведут.
Использование плагина WP Activity Log для отслеживания активности
Плагин WP Activity Log позволяет фиксировать активность пользователей, включая дату и время входа. С его помощью можно получить актуальные данные для удаления.
После установки и настройки плагина, вы можете выгрузить список пользователей с последним входом и на основе этой информации создать скрипт для удаления.
Кодовое решение: как сохранить дату последнего входа пользователя
Чтобы автоматически удалять пользователей по дате последнего входа, сначала надо сохранить эту дату при каждом входе. Добавим следующий код в файл functions.php вашей темы или в кастомный плагин:
function wpinc_save_last_login( $login, $user ) {
update_user_meta( $user->ID, '_wpinc_last_login', current_time('mysql') );
}
add_action( 'wp_login', 'wpinc_save_last_login', 10, 2 );Этот хук обновляет мета-данные пользователя с ключом _wpinc_last_login при каждом успешном входе.
Как написать функцию для удаления неактивных пользователей
Теперь создадим функцию, которая находит и удаляет пользователей, не заходивших более 180 дней (6 месяцев), исключая администраторов:
function wpinc_delete_inactive_users() {
$args = array(
'meta_key' => '_wpinc_last_login',
'meta_value' => date('Y-m-d H:i:s', strtotime('-180 days')),
'meta_compare' => '<',
'role__not_in' => array('administrator'),
'fields' => 'ID'
);
$user_query = new WP_User_Query( $args );
$users = $user_query->get_results();
if ( !empty($users) ) {
foreach ( $users as $user_id ) {
wp_delete_user( $user_id );
}
}
}Эта функция получает ID пользователей, у которых дата последнего входа старше 180 дней, и удаляет их.
Автоматизация с помощью WP-Cron
Чтобы запускать удаление автоматически, добавим задачу в планировщик WordPress:
function wpinc_schedule_user_cleanup() {
if ( ! wp_next_scheduled( 'wpinc_daily_user_cleanup' ) ) {
wp_schedule_event( time(), 'daily', 'wpinc_daily_user_cleanup' );
}
}
add_action( 'wp', 'wpinc_schedule_user_cleanup' );
add_action( 'wpinc_daily_user_cleanup', 'wpinc_delete_inactive_users' );Этот код запускает функцию wpinc_delete_inactive_users раз в сутки.
Использование плагина Clearfy Pro для управления пользователями
Если вы хотите более простой и функциональный способ, рассмотрите Clearfy Pro. В нем есть встроенные инструменты для аудита пользователей и их автоматического удаления по заданным критериям без необходимости писать код.
Clearfy также позволяет отключать неиспользуемые функции WordPress для ускорения сайта и повышения безопасности, что полезно в комплексе с удалением неактивных аккаунтов.
Полезные рекомендации при удалении пользователей
Перед тем как запускать автоматическое удаление, учтите:
- Всегда делайте резервную копию базы данных, чтобы избежать потери важных данных.
- Оповещайте пользователей о возможном удалении аккаунта за счет рассылки писем с предупреждениями.
- Исключайте из удаления администраторов и ключевые учетные записи.
- Проверяйте логи и отчеты после выполнения скрипта для контроля.
Пример рассылки напоминания о неактивности
Добавьте функцию для отправки email перед удалением:
function wpinc_notify_inactive_users() {
$args = array(
'meta_key' => '_wpinc_last_login',
'meta_value' => date('Y-m-d H:i:s', strtotime('-170 days')),
'meta_compare' => '<',
'role__not_in' => array('administrator'),
);
$user_query = new WP_User_Query( $args );
$users = $user_query->get_results();
foreach ( $users as $user ) {
$user_info = get_userdata( $user->ID );
wp_mail( $user_info->user_email, 'Напоминание о неактивности', 'Здравствуйте! Вы давно не заходили на наш сайт. Если вы не активируете аккаунт в ближайшее время, он будет удален.' );
}
}Эту функцию можно запускать, например, за 10 дней до удаления.
Заключение по теме удаления неактивных пользователей
Автоматическое удаление неактивных пользователей — важная задача для поддержания безопасности и оптимизации WordPress-сайта. Либо используйте готовые плагины с функцией ведения активности и удаления, либо реализуйте кастомные решения на базе кода, представленного выше. Дополнительно не забывайте уведомлять пользователей и делать резервные копии.
Если хотите более удобный и функциональный инструмент, рекомендуем ознакомиться с Clearfy Pro, который значительно упростит эту задачу.