В процессе администрирования сайта на WordPress часто возникает необходимость управлять пользователями, в том числе удалять тех, кто заблокирован или давно неактивен. В этой статье мы подробно разберём, как найти и удалить заблокированных пользователей, используя как готовые плагины, так и собственные решения на PHP с примерами кода.
Что такое блокировка пользователей в WordPress и зачем их удалять
В стандартном WordPress нет встроенной функции «блокировки» пользователей, но часто администраторы используют разные методы для ограничения доступа: меняют роль пользователя на минимальную (например, подписчик), добавляют пользовательские поля с меткой 'заблокирован', или применяют плагины, которые реализуют блокировку. Такие пользователи не могут авторизоваться, но остаются в базе данных.
Накопление заблокированных пользователей приводит к утяжелению базы данных, усложняет управление пользователями и может быть уязвимостью безопасности. Поэтому важно периодически чистить базу от таких записей.
Далее рассмотрим, как выполнить поиск и удаление заблокированных пользователей.
Как найти заблокированных пользователей через SQL и PHP
Если вы используете кастомное поле usermeta для блокировки, например, ключ wpall_blocked со значением 1, то можно получить список таких пользователей с помощью запроса к базе данных:
SELECT user_id FROM wp_usermeta WHERE meta_key = 'wpall_blocked' AND meta_value = '1';
Для удаления пользователей на PHP с использованием WP_User_Query и удаления можно использовать следующий пример функции:
function wpall_delete_blocked_users() {
$args = [
'meta_key' => 'wpall_blocked',
'meta_value' => '1',
'fields' => 'ID',
'number' => 100
];
$user_query = new WP_User_Query($args);
if (!empty($user_query->results)) {
foreach ($user_query->results as $user_id) {
wp_delete_user($user_id);
}
}
}
// Запуск функции, например, через WP-CLI или хук
wpall_delete_blocked_users();
Этот код удалит до 100 заблокированных пользователей, у которых в метаданных есть ключ wpall_blocked со значением 1.
Обработка больших объёмов
Для удаления большого количества пользователей лучше использовать пагинацию или WP-Cron, чтобы не перегрузить сервер. Например, можно запускать функцию раз в час, удаляя по 100 пользователей.
Использование плагинов для управления и удаления заблокированных пользователей
Если вы не хотите писать код, можно воспользоваться готовыми плагинами. Вот несколько полезных для этой задачи:
- WP Bulk Delete — позволяет массово удалять пользователей по разным критериям, включая метаданные, роли и дату регистрации.
- User Blocker — плагин для блокировки пользователей, который можно использовать совместно с WP Bulk Delete для удаления заблокированных.
- Clearfy Pro (https://wpshop.ru/clearfy-pro?utm_source=wpall.ru&utm_medium=article&utm_campaign=udalit-zablokirovannye-polzovateli-wordpress) — содержит функции оптимизации и управления пользователями, можно настроить удаление неактивных и заблокированных пользователей.
Для удаления заблокированных пользователей через WP Bulk Delete выполните следующие шаги:
- Установите и активируйте плагин.
- Перейдите в меню Bulk Delete -> Users.
- Выберите фильтр по пользовательским метаданным, например,
wpall_blocked = 1. - Выберите количество пользователей для удаления и нажмите кнопку удаления.
Автоматизация удаления заблокированных пользователей через WP-Cron
Чтобы не запускать удаление вручную, можно настроить автоматический запуск по расписанию. Для этого создадим задачу WP-Cron, которая будет запускать нашу функцию удаления:
function wpall_schedule_delete_blocked_users() {
if (!wp_next_scheduled('wpall_cron_delete_blocked_users')) {
wp_schedule_event(time(), 'daily', 'wpall_cron_delete_blocked_users');
}
}
add_action('wp', 'wpall_schedule_delete_blocked_users');
add_action('wpall_cron_delete_blocked_users', 'wpall_delete_blocked_users');
Этот код запустит функцию удаления один раз в сутки. При необходимости можно изменить периодичность на более частую.
Учет безопасности при удалении пользователей
При удалении пользователей обязательно учитывайте:
- Резервное копирование базы перед массовыми удалениями.
- Удаление связанных данных (комментарии, посты) — параметр
wp_delete_user($user_id, $reassign)позволяет указать, кому передать посты. - Проверку прав текущего пользователя, если функция вызывается из админки.
Подведение итогов и рекомендации
Удаление заблокированных пользователей в WordPress — важная задача для поддержания чистоты базы и безопасности сайта. Вы можете использовать как готовые плагины, так и писать собственные решения с помощью WP_User_Query и функций WordPress.
Для сайтов с большим количеством пользователей рекомендуем автоматизировать процесс через WP-Cron и тщательно тестировать скрипты на тестовой среде.
Если вам нужны дополнительные инструменты для управления пользователями и оптимизации сайта, обратите внимание на коллекцию плагинов Clearfy Pro на wpshop.ru.