Почему важно удалять неактивных пользователей
С течением времени на любом сайте WordPress накапливается большое количество пользователей, которые давно не заходили в аккаунт. Это может негативно влиять на безопасность сайта, его производительность и управление базой данных. Неактивные пользователи чаще всего не приносят пользы, зато могут стать объектом атаки или просто загромождать систему.
Удаление таких пользователей помогает очистить базу, повысить безопасность и улучшить качество управления сообществом. Особенно актуально это для сайтов с регистрацией и каталогом пользователей, что часто встречается на ресурсах с каталогами и каталогоподобными функциями, как на wpcatalog.ru.
Автоматизация этого процесса избавляет администратора от рутинной проверки и удаления вручную, позволяя настроить удобные правила и полностью доверить эту задачу скриптам или плагинам.
Как определить неактивных пользователей в WordPress
Главный критерий неактивности — дата последнего входа пользователя. К сожалению, по умолчанию WordPress не хранит дату последнего логина, поэтому для начала нужно внедрить механизм её записи.
Для этого удобно использовать хук wp_login и сохранять дату последнего входа в user meta. Ниже пример функции, которую можно добавить в файл functions.php вашей темы или в собственный плагин:
function wpcatalog_update_last_login( $user_login, $user ) {
update_user_meta( $user->ID, '_wpcatalog_last_login', current_time('mysql') );
}
add_action('wp_login', 'wpcatalog_update_last_login', 10, 2);Эта функция сохраняет текущую дату и время при каждом входе пользователя. После этого можно использовать это значение для проверки неактивных аккаунтов.
Автоматическое удаление пользователей по времени неактивности
Когда дата последнего входа сохраняется, можно написать скрипт, который будет запускаться по расписанию и удалять пользователей, неактивных, например, 180 дней и больше.
Ниже приведён пример функции для удаления таких пользователей:
function wpcatalog_delete_inactive_users() {
$args = array(
'meta_key' => '_wpcatalog_last_login',
'meta_value' => date('Y-m-d H:i:s', strtotime('-180 days')),
'meta_compare' => '<=',
'fields' => 'ID',
);
$user_query = new WP_User_Query( $args );
$users = $user_query->get_results();
if ( !empty( $users ) ) {
foreach ( $users as $user_id ) {
require_once ABSPATH . 'wp-admin/includes/user.php';
wp_delete_user( $user_id );
}
}
}
// Запуск по крону
if ( !wp_next_scheduled( 'wpcatalog_cron_delete_inactive_users' ) ) {
wp_schedule_event( time(), 'daily', 'wpcatalog_cron_delete_inactive_users' );
}
add_action( 'wpcatalog_cron_delete_inactive_users', 'wpcatalog_delete_inactive_users' );Этот код ищет пользователей, у которых дата последнего входа старше 180 дней, и удаляет их. Для запуска периодически используется системный планировщик WordPress — WP-Cron.
Обязательно протестируйте этот код на тестовом сайте, чтобы избежать случайного удаления важных аккаунтов.
Рекомендации по плагинам для управления неактивными пользователями
Если вы предпочитаете готовые решения, существуют плагины, которые позволяют автоматически отключать или удалять неактивных пользователей:
- Inactive User Deleter — простой плагин для удаления пользователей, которые не активны определённое время.
- Remove Inactive Users — гибкий инструмент с возможностью настройки периодов и типов пользователей.
- User Cleanup — комплексный плагин для чистки базы пользователей с продвинутыми фильтрами.
При использовании плагинов обратите внимание на их совместимость с вашей версией WordPress и регулярно делайте бэкапы данных.
Как интегрировать очистку неактивных пользователей в WPShop
Для сайтов на WordPress с каталогом товаров и пользователей, например, на базе плагинов WPShop, автоматизация удаления неактивных пользователей помогает сохранять актуальность каталога и повышать безопасность.
Вы можете использовать приведённый выше код, а также настроить уведомления через электронную почту с помощью плагина WPRemark, чтобы предупреждать пользователей о предстоящем удалении аккаунта из-за неактивности.
Выводы и советы по безопасности
Удаление неактивных пользователей — важная часть поддержки безопасности и производительности сайта. Сохраняйте резервные копии перед автоматическими операциями, чтобы избежать потерь данных.
Регулярно проверяйте логи и уведомления, чтобы вовремя реагировать на ошибки в работе автоматизации.
Используя предложенные методы и плагиновые решения, вы сможете эффективно управлять базой пользователей и поддерживать сайт WordPress в оптимальном состоянии.