Почему появляются пустые и неактивные регистрации пользователей
В процессе работы сайта на WordPress часто появляются пользователи с неполными данными или которые никогда не активировались. Это могут быть тестовые аккаунты, боты или пользователи, которые начали регистрацию, но не завершили её. Такие записи засоряют базу данных и могут влиять на производительность сайта, а также усложнять управление пользователями.
Пустые регистрации обычно характеризуются отсутствием email, имени пользователя или других обязательных полей. Неактивные — это пользователи, которые зарегистрировались, но не подтвердили свой аккаунт или не заходили на сайт длительное время.
Автоматическое и регулярное удаление таких пользователей помогает поддерживать базу в чистоте и снижать нагрузку.
Поиск и удаление пустых пользователей с помощью кода
Для начала разберёмся, как можно найти и удалить пустые или неактивные регистрации программно. В WordPress пользователи хранятся в таблице wp_users, а дополнительные метаданные — в wp_usermeta. Мы можем написать функцию, которая отфильтрует пользователей с пустыми email или без последнего входа.
Пример функции для удаления пустых email пользователей:
function wptemp_delete_empty_email_users() {
global $wpdb;
$users = $wpdb->get_col("SELECT ID FROM {$wpdb->users} WHERE user_email = '' OR user_email IS NULL");
foreach ($users as $user_id) {
require_once ABSPATH . 'wp-admin/includes/user.php';
wp_delete_user($user_id);
}
}
// Запуск функции
wptemp_delete_empty_email_users();Эта функция выбирает пользователей без email и удаляет их через стандартный API WordPress, что обеспечивает корректное удаление данных.
Удаление пользователей, которые не заходили на сайт длительное время
Чтобы определить неактивных пользователей, можно опираться на мета-данные с последним временем входа. Если у вас нет плагина, который сохраняет эту информацию, её можно записывать самостоятельно при авторизации. Ниже пример, как добавить запись последнего входа:
function wptemp_save_last_login($user_login, $user) {
update_user_meta($user->ID, 'wptemp_last_login', current_time('timestamp'));
}
add_action('wp_login', 'wptemp_save_last_login', 10, 2);После того как данные появляются, можно написать функцию для удаления пользователей, не заходивших, например, более 6 месяцев:
function wptemp_delete_inactive_users($months = 6) {
global $wpdb;
$threshold = strtotime("-{$months} months");
$users = $wpdb->get_col("SELECT user_id FROM {$wpdb->usermeta} WHERE meta_key = 'wptemp_last_login' AND meta_value < {$threshold}");
foreach ($users as $user_id) {
require_once ABSPATH . 'wp-admin/includes/user.php';
wp_delete_user($user_id);
}
}
// Запуск удаления пользователей, неактивных 6 месяцев
wptemp_delete_inactive_users(6);Использование плагинов для удаления неактивных и пустых пользователей
Если не хочется писать код, можно использовать готовые решения. Среди плагинов, которые помогают управлять пользователями и удалять неактивных, можно выделить:
- Inactive User Deleter — автоматически удаляет пользователей, не заходивших на сайт заданный период.
- WP Bulk Delete — позволяет массово удалять пользователей по разным условиям, включая дату регистрации и метаданные.
- Clearfy Pro (https://wpshop.ru/clearfy-pro?utm_source=wptemp.ru&utm_medium=article&utm_campaign=udalit-pustye-registracii-polzovatelej-wordpress) — расширенный набор оптимизаций, включая управление пользователями.
Настройка таких плагинов обычно проста: вы выбираете условия удаления и периодичность. Это удобно для регулярного обслуживания сайта.
Пример настройки WP Bulk Delete для удаления неактивных пользователей
В настройках плагина нужно выбрать раздел “Delete Users”, затем задать фильтр по дате последнего входа или регистрации. Можно указать, например, удалить пользователей, которые не заходили 180 дней. Плагин поддерживает отложенное и плановое удаление.
Как предотвратить появление пустых и неактивных пользователей
Удаление — это хорошо, но лучше не допускать появления мусорных аккаунтов. Несколько рекомендаций:
- Включить подтверждение email регистрации. Это отсечёт ботов и фейковые регистрации.
- Использовать капчу на странице регистрации. Плагины, например, Google Captcha (reCAPTCHA) помогут снизить спам.
- Добавить валидацию полей регистрации. Например, проверять email и другие данные на стороне сервера и клиента.
Если вы используете плагин для регистрации, например, WPCommunity (https://wpshop.ru/wpcommunity?utm_source=wptemp.ru&utm_medium=article&utm_campaign=udalit-pustye-registracii-polzovatelej-wordpress), в нём есть встроенные настройки для усиления безопасности и проверки данных.
Полезные советы при работе с пользователями в WordPress
При работе с удалением пользователей будьте внимательны, особенно если на сайте есть контент, созданный этими пользователями. По умолчанию при удалении можно переназначить записи другому пользователю, чтобы не потерять данные.
Для удаления через код с переназначением можно использовать второй параметр функции wp_delete_user:
wp_delete_user($user_id, $reassign_user_id);Где $reassign_user_id — ID пользователя, которому переходят записи удаляемого.
Также рекомендуется сделать резервную копию базы перед массовым удалением пользователей, чтобы избежать потери важных данных.