Ведение базы пользователей WordPress — важная задача для поддержания безопасности и производительности сайта. Со временем на сайте накапливаются неактивные аккаунты, которые не используются владельцами, но могут представлять угрозу безопасности или создавать избыточную нагрузку на базу данных. В этой статье рассмотрим, как автоматически удалять неактивных пользователей WordPress с помощью кода и плагинов, а также разберем лучшие практики для безопасного и эффективного удаления.
Почему важно удалять неактивных пользователей WordPress
Неактивные пользователи — это аккаунты, которые давно не заходили на сайт и не проявляли активности. Они могут стать причиной нескольких проблем:
- Безопасность: заброшенные аккаунты легче взломать, особенно если пароли слабые или были скомпрометированы.
- Производительность: большое количество пользователей замедляет операции с базой данных, например, при авторизации или экспорте.
- Управление: сложно ориентироваться и управлять базой пользователей, если она переполнена неактивными записями.
Регулярное удаление таких пользователей помогает поддерживать сайт в порядке и снижает риски.
Как определить неактивных пользователей WordPress
Определение критерия неактивности зависит от специфики сайта, но обычно к неактивным относятся пользователи, которые не заходили на сайт более определённого периода — например, 6 или 12 месяцев.
Для хранения информации о последнем входе можно использовать плагин или добавить собственный код, если на сайте не ведётся такая статистика. По умолчанию WordPress не сохраняет дату последнего входа пользователя, поэтому данный шаг требуется выполнить самостоятельно.
Добавление записи даты последнего входа пользователя
Добавим в functions.php темы или в кастомный плагин следующий код, чтобы сохранять дату последнего входа:
function wpbook_update_last_login($login) {
$user = get_user_by('login', $login);
if ($user) {
update_user_meta($user->ID, 'wpbook_last_login', current_time('mysql'));
}
}
add_action('wp_login', 'wpbook_update_last_login');Этот код обновляет мета-поле wpbook_last_login при каждом входе пользователя на сайт. Далее можно использовать это поле для фильтрации неактивных пользователей.
Автоматическое удаление неактивных пользователей с помощью кода
После того как мы фиксируем дату последнего входа, можно написать функцию, которая будет автоматически удалять пользователей, не заходивших на сайт, например, более 6 месяцев.
Пример кода, который можно добавить в кастомный плагин или файл functions.php:
function wpbook_delete_inactive_users() {
$threshold = strtotime('-6 months');
$args = [
'meta_key' => 'wpbook_last_login',
'meta_value' => date('Y-m-d H:i:s', $threshold),
'meta_compare' => '<',
'fields' => 'ID',
'number' => 1000
];
$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) {
wp_delete_user($user_id);
}
}
}
// Запуск функции по крону раз в сутки
if (!wp_next_scheduled('wpbook_daily_delete_inactive_users')) {
wp_schedule_event(time(), 'daily', 'wpbook_daily_delete_inactive_users');
}
add_action('wpbook_daily_delete_inactive_users', 'wpbook_delete_inactive_users');Данный код ищет пользователей, у которых дата последнего входа старше 6 месяцев, и удаляет их. Также функция привязана к ежедневному событию WP-Cron.
Особенности и предосторожности
- Перед удалением пользователей желательно создать резервную копию базы данных.
- Не удаляйте администраторов или важных пользователей. Можно добавить проверку роли в код.
- Если используется плагин для регистрации, проверьте совместимость.
Использование плагинов для автоматического удаления неактивных пользователей
Если вы предпочитаете готовые решения, можно использовать плагины, которые упрощают управление неактивными пользователями:
- Inactive User Deleter — плагин позволяет автоматически удалять пользователей, которые не заходили на сайт в определённый период. Можно настроить исключения по ролям и получать уведомления.
- Bulk Delete — мощный инструмент для массового удаления пользователей по разным критериям, включая дату последнего входа.
Эти плагины удобно настраиваются и позволяют гибко управлять базой пользователей без написания кода.
Интеграция с WPBook и сопутствующими плагинами
Если вы используете тему или плагины от WPShop, например, Clearfy Pro, они могут содержать настройки для оптимизации базы данных, в том числе по пользователям. Рекомендуется изучить их возможности для комплексной автоматизации.
Заключение: как внедрить автоматическое удаление на практике
Для внедрения автоматического удаления неактивных пользователей на WordPress нужно:
- Добавить код для записи даты последнего входа пользователя.
- Реализовать функцию удаления пользователей с проверкой срока неактивности.
- Настроить запуск функции по расписанию через WP-Cron.
- Тестировать на тестовом сайте и делать резервные копии.
- Рассмотреть использование готовых плагинов для удобства и расширенных функций.
Такой подход поможет поддерживать чистоту и безопасность базы пользователей без лишних усилий и рисков.