Управление пользователями — важная часть администрирования любого сайта на WordPress. Со временем на сайте накапливаются аккаунты, которые давно не используются: заброшенные, спам-аккаунты, тестовые пользователи. Их хранение нагружает базу данных и может создавать угрозы безопасности. В этой статье я расскажу, как автоматизировать удаление таких пользователей с помощью кода и плагинов, чтобы держать сайт в порядке и не тратить время на ручные операции.
Почему важно удалять неиспользуемых пользователей
Накопление неактивных пользователей приводит к нескольким проблемам. Во-первых, база данных разрастается, что замедляет работу сайта. Во-вторых, старые аккаунты могут использоваться злоумышленниками для взлома, особенно если пароли слабые или они были скомпрометированы. В-третьих, это создает неудобство при управлении пользователями, усложняя поиск и сортировку.
Регулярное удаление таких пользователей помогает поддерживать безопасность и производительность сайта без лишних усилий. Особенно это актуально для проектов с большим количеством регистраций, форумов или магазинов на базе WordPress.
Критерии выбора пользователей для удаления
Перед автоматизацией важно определить, какие пользователи считаются неиспользуемыми. Обычно это:
- Пользователи, которые не заходили на сайт более определенного времени (например, 6 месяцев или год).
- Пользователи с ролью «Подписчик» или «Гость», которые никогда не публиковали контент.
- Неактивные аккаунты с пустыми профилями или без активности.
- Спам-аккаунты, зарегистрированные через формы с недостаточной защитой.
Для точного определения можно использовать метаданные пользователя, дату последнего входа или активность в комментариях и публикациях.
Автоматизация удаления пользователей с помощью кода
Рассмотрим пример функции с префиксом wpguest_, которая удаляет пользователей, не заходивших на сайт более 180 дней. Для этого нам понадобится дополнительное поле user_last_login, которое нужно записывать при каждом входе пользователя. Можно использовать стандартное событие wp_login для обновления метаданных.
Шаг 1. Сохраняем дату последнего входа пользователя
add_action('wp_login', 'wpguest_update_last_login', 10, 2);
function wpguest_update_last_login( $user_login, $user ) {
update_user_meta( $user->ID, 'user_last_login', current_time('timestamp') );
}Этот код обновляет мета-поле user_last_login с текущим временем при каждой авторизации пользователя.
Шаг 2. Функция для удаления неактивных пользователей
function wpguest_delete_inactive_users( $days = 180 ) {
$args = [
'meta_key' => 'user_last_login',
'meta_compare' => '<',
'meta_value' => strtotime("-{$days} days"),
'fields' => 'ID',
'number' => -1,
'exclude' => [1], // исключаем администратора с ID 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 ) {
wp_delete_user( $user_id );
}
}
}Функция ищет пользователей, у которых последний вход был более 180 дней назад, и удаляет их. Можно запускать эту функцию вручную или по расписанию.
Шаг 3. Автоматизация через крон-задачу WordPress
Чтобы регулярно удалять неактивных пользователей, добавим событие в планировщик WP-Cron:
if ( ! wp_next_scheduled( 'wpguest_daily_delete_inactive_users' ) ) {
wp_schedule_event( time(), 'daily', 'wpguest_daily_delete_inactive_users' );
}
add_action( 'wpguest_daily_delete_inactive_users', 'wpguest_delete_inactive_users' );Теперь функция wpguest_delete_inactive_users будет запускаться каждый день, очищая базу.
Использование плагинов для автоматизации
Если не хочется писать код, можно воспользоваться готовыми решениями. Например, плагин WPRemark помогает управлять пользователями и отзывами, включая фильтрацию и массовое удаление. Он позволяет настроить автоматическое удаление пользователей по заданным критериям.
Другой вариант — плагин Inactive User Deleter, который автоматически удаляет пользователей на основании их неактивности. В нем можно задать временной промежуток и роли пользователей для удаления.
Выбирая плагин, обратите внимание на совместимость с вашей версией WordPress и поддержку разработчиков.
Дополнительные советы по безопасности и резервному копированию
Перед автоматическим удалением пользователей настоятельно рекомендую настроить регулярное резервное копирование базы данных. Это позволит восстановить случайно удаленные аккаунты или данные.
Также полезно уведомлять пользователей о предстоящем удалении, если это возможно, чтобы дать им шанс войти и сохранить аккаунт.
Используйте роли и возможности WordPress, чтобы ограничивать доступ к важным функциям и минимизировать риски.
Выводы и рекомендации
Автоматизация удаления неиспользуемых пользователей на WordPress — эффективный способ поддерживать сайт в чистоте и безопасности. Пример с кодом демонстрирует, как просто можно реализовать это самостоятельно, а готовые плагины позволяют настроить процесс без программирования.
Регулярно проверяйте и обновляйте настройки, чтобы адаптироваться к изменяющимся требованиям вашего сайта и его аудитории.