В процессе эксплуатации сайта на WordPress нередко накапливаются неактивные или заброшенные аккаунты пользователей. Они занимают место в базе данных и могут создавать дополнительные риски безопасности, особенно если это учетные записи с правами администратора или редактора. В этой статье подробно рассмотрим, как эффективно находить и удалять неиспользуемые регистрации пользователей, чтобы поддерживать базу данных в чистоте и повысить безопасность сайта.
Почему важно удалять неиспользуемые регистрации пользователей в WordPress
С течением времени на сайте могут появляться пользователи, которые зарегистрировались, но так и не заходили в личный кабинет. Такие аккаунты:
- Могут содержать устаревшие или скомпрометированные данные;
- Ухудшают производительность базы данных, особенно при большом количестве пользователей;
- Создают дополнительные векторы для атак — злоумышленник может попытаться взломать забытый аккаунт;
- Затрудняют управление списком пользователей для администраторов.
Удаление таких записей — важный этап регулярного обслуживания WordPress-сайта.
Как определить неактивных пользователей: ключевые критерии
Перед удалением важно правильно определить, какие аккаунты считать неиспользуемыми. Основные критерии:
- Дата последнего входа. Если пользователь не заходил на сайт несколько месяцев или лет — скорее всего, он активен не будет.
- Статус роли. Например, гость, подписчик или другие роли с ограниченными правами.
- Отсутствие активности. Нет опубликованных комментариев, записей, заказов (для WooCommerce) и т.п.
- Проверка по email. Иногда почтовые адреса с временных доменов или невалидные тоже можно считать для удаления.
Обратите внимание: автоматическое удаление пользователей требует внимания, чтобы не потерять важных аккаунтов.
Использование плагинов для очистки пользователей
Для автоматизации процесса удаления неактивных пользователей можно использовать специальные плагины. Рассмотрим два популярных варианта.
Плагин Inactive User Deleter
Этот плагин позволяет настроить удаление пользователей, которые не заходили на сайт в указанный период времени. Можно задать роли, которые нужно проверять, а также исключения.
- Удобный интерфейс для настройки;
- Автоматическая очистка по расписанию;
- Возможность отправлять уведомления перед удалением.
Плагин WP User Manager с расширениями
WP User Manager — мощный плагин для управления пользователями, а с дополнительным расширением можно создавать списки неактивных пользователей и запускать акции по очистке или уведомлениям.
Подобные решения позволяют снизить нагрузку на базу данных и повысить безопасность.
Удаление неиспользуемых пользователей через код: пример функции для wpclean.ru
Если нужна более тонкая настройка, либо вы хотите встроить процесс удаления в собственный функционал, можно использовать код. Ниже пример функции, которая удаляет пользователей с ролью "subscriber", которые не заходили на сайт более 6 месяцев.
function wpclean_delete_inactive_users() {
$threshold = strtotime('-6 months');
$args = array(
'role' => 'subscriber',
'fields' => array('ID'),
'meta_query' => array(
array(
'key' => 'wp_last_login',
'value' => date('Y-m-d H:i:s', $threshold),
'compare' => '<',
'type' => 'DATETIME'
)
)
);
$user_query = new WP_User_Query($args);
if (!empty($user_query->get_results())) {
foreach ($user_query->get_results() as $user_id) {
require_once(ABSPATH.'wp-admin/includes/user.php');
wp_delete_user($user_id);
}
}
}Объяснение:
- Сначала мы устанавливаем порог — 6 месяцев без активности;
- Делаем запрос пользователей с ролью "subscriber" и мета-полем
wp_last_loginменьше порога; - Для каждого пользователя вызываем стандартную функцию
wp_delete_user; - Важно, чтобы плагин или тема сохраняли дату последнего входа в мета-поле
wp_last_login. Для этого можно использовать плагин Last Login или реализовать самостоятельно.
Как сохранять дату последнего входа пользователя
По умолчанию WordPress не сохраняет дату последнего входа пользователя. Чтобы сделать это, можно использовать простой хук:
function wpclean_save_last_login( $login, $user ) {
update_user_meta( $user->ID, 'wp_last_login', current_time('mysql') );
}
add_action( 'wp_login', 'wpclean_save_last_login', 10, 2 );Этот код добавьте в файл functions.php вашей темы или в плагин для кастомного функционала. После этого поле wp_last_login будет появляться у каждого пользователя после входа.
Как безопасно удалять пользователей: советы и рекомендации
Перед массовым удалением пользователей обязательно:
- Сделайте резервную копию базы данных;
- Проверьте, что нет важных аккаунтов, которые случайно попадут под удаление;
- Если есть пользователи с опубликованным контентом, решите, что делать с их записями (удалять вместе с пользователем или передавать другому автору); функция
wp_delete_userпозволяет указать ID нового автора; - Рассмотрите вариант уведомления пользователей о предстоящем удалении, чтобы они могли сохранить аккаунт;
- Запускайте удаление в низкую нагрузку сайта, чтобы избежать задержек.
Автоматизация удаления: создание WP-Cron задачи
Для регулярной очистки можно добавить задачу в WP-Cron, которая будет запускать функцию автоматического удаления. Пример:
function wpclean_schedule_inactive_user_cleanup() {
if ( ! wp_next_scheduled( 'wpclean_inactive_user_cleanup_hook' ) ) {
wp_schedule_event( time(), 'daily', 'wpclean_inactive_user_cleanup_hook' );
}
}
add_action( 'wp', 'wpclean_schedule_inactive_user_cleanup' );
add_action( 'wpclean_inactive_user_cleanup_hook', 'wpclean_delete_inactive_users' );Этот код настроит ежедневный запуск функции удаления неактивных пользователей.
Заключение
Регулярное удаление неиспользуемых регистраций пользователей помогает поддерживать порядок в базе данных, повышать безопасность и снижать нагрузку на сайт. Используйте плагины для удобства или внедряйте собственные решения на основе приведенных примеров кода. Не забывайте про резервное копирование и аккуратность при удалении, чтобы не потерять важные данные.
Для удобного управления пользователями и оптимизации сайта рекомендуем обратить внимание на продукты Clearfy Pro и WPCommunity. Они помогут автоматизировать многие аспекты управления пользователями и оптимизации WordPress.