Почему важно удалять заблокированных и неактивных пользователей WordPress
Ведение сайта на WordPress часто сопровождается регистрацией пользователей. Со временем база аккаунтов может разрастаться, в ней появляются неактивные, заблокированные или спам-пользователи. Это негативно сказывается на безопасности, производительности и удобстве администрирования. Удаление таких аккаунтов помогает:
- Снизить нагрузку на базу данных и ускорить работу сайта.
- Уменьшить риски безопасности, связанные с возможными атаками через забытые аккаунты.
- Упростить управление пользователями и повысить качество аудитории.
Поэтому регулярный аудит и очистка пользователей — важная задача для любого администратора WordPress.
Как найти заблокированных и неактивных пользователей в WordPress
В WordPress по умолчанию нет поля «заблокирован» для пользователей, но часто используют плагины или мета-поля для блокировки. Кроме того, можно считать неактивными пользователей, которые не заходили на сайт длительное время. Для поиска таких аккаунтов существуют несколько способов.
Использование метаполей и плагинов для блокировки
Если вы используете плагин, например, Clearfy Pro, он может добавлять метаполя, например, blocked или user_status. Вы можете получить пользователей с этим метаполем через WP_User_Query:
$args = [
'meta_key' => 'blocked',
'meta_value' => '1',
'fields' => 'ID'
];
$blocked_users = new WP_User_Query($args);
foreach ($blocked_users->get_results() as $user_id) {
// обработать
}Если плагин не используется, может быть полезно добавить собственное поле для блокировки.
Определение неактивных пользователей по последнему времени входа
WordPress не хранит дату последнего входа пользователя по умолчанию. Чтобы отслеживать это, можно использовать плагин или добавить код, который при каждом входе обновляет поле last_login в user meta.
add_action('wp_login', 'wplock_update_last_login', 10, 2);
function wplock_update_last_login($user_login, $user) {
update_user_meta($user->ID, 'last_login', current_time('mysql'));
}Далее можно получить список пользователей, не заходивших на сайт более 3 или 6 месяцев:
$date_threshold = date('Y-m-d H:i:s', strtotime('-6 months'));
$args = [
'meta_key' => 'last_login',
'meta_value' => $date_threshold,
'meta_compare' => '<',
'fields' => 'ID'
];
$inactive_users = new WP_User_Query($args);
foreach ($inactive_users->get_results() as $user_id) {
// обработать
}Как удалить заблокированных и неактивных пользователей — практические методы
Удаление пользователей вручную через админку неудобно при большом количестве. Лучше автоматизировать процесс.
Удаление через WP-CLI
Если у вас есть доступ к серверу, WP-CLI — отличный инструмент. Например, чтобы удалить пользователей с определённым метаполем:
wp user list --meta_key=blocked --meta_value=1 --field=ID | xargs wp user delete --yesИли удалить пользователей, не входивших более 6 месяцев (предварительно нужно добавить last_login):
wp user list --meta_key=last_login --meta_compare='<' --meta_value='2023-12-01' --field=ID | xargs wp user delete --yesАвтоматическое удаление через PHP-код
Можно написать функцию, которая удалит таких пользователей по расписанию с помощью Cron:
function wplock_delete_inactive_blocked_users() {
$date_threshold = date('Y-m-d H:i:s', strtotime('-6 months'));
$args = [
'meta_query' => [
'relation' => 'OR',
[
'key' => 'blocked',
'value' => '1',
'compare' => '='
],
[
'key' => 'last_login',
'value' => $date_threshold,
'compare' => '<'
]
],
'fields' => 'ID'
];
$query = new WP_User_Query($args);
foreach ($query->get_results() as $user_id) {
wp_delete_user($user_id);
}
}
add_action('wplock_daily_cleanup', 'wplock_delete_inactive_blocked_users');
// Запланировать событие в functions.php, если еще не запланировано
if (!wp_next_scheduled('wplock_daily_cleanup')) {
wp_schedule_event(time(), 'daily', 'wplock_daily_cleanup');
}Этот код удалит пользователей, у которых метаполе blocked=1 или последний вход был более 6 месяцев назад.
Плагины для управления и очистки пользователей WordPress
Если не хотите писать код, обратите внимание на плагины:
- Inactive User Deleter — автоматически удаляет пользователей, неактивных заданный период.
- Clearfy Pro — расширяет возможности управления безопасностью, в том числе блокировку и очистку.
- WP Bulk Delete — мощный инструмент для массового удаления пользователей по разным критериям.
Все эти плагины можно найти и скачать на WPSHOP.
Как избежать случайного удаления нужных пользователей
При автоматическом удалении важно предусмотреть:
- Создание резервных копий базы данных перед удалением.
- Логирование действий удаления для последующего анализа.
- Исключение администраторов и важных ролей из удаления.
Например, модифицируем функцию удаления пользователей, чтобы не трогать админов:
function wplock_delete_inactive_blocked_users_safe() {
$date_threshold = date('Y-m-d H:i:s', strtotime('-6 months'));
$args = [
'meta_query' => [
'relation' => 'OR',
[
'key' => 'blocked',
'value' => '1',
'compare' => '='
],
[
'key' => 'last_login',
'value' => $date_threshold,
'compare' => '<'
]
],
'fields' => 'ID'
];
$query = new WP_User_Query($args);
foreach ($query->get_results() as $user_id) {
$user = get_userdata($user_id);
if (in_array('administrator', $user->roles)) {
continue; // пропускаем админов
}
wp_delete_user($user_id);
}
}Выводы и рекомендации по работе с заблокированными и неактивными пользователями
Регулярный аудит пользователей — обязательная практика для поддержания безопасности и производительности сайта. Используйте отслеживание времени последнего входа, метаполя блокировок и инструменты автоматизации для удобства.
Если вы хотите расширить функциональность управления пользователями, обратите внимание на плагины, например, Clearfy Pro или WP Bulk Delete.