В процессе эксплуатации сайта на WordPress иногда возникает необходимость массово удалить пользователей, которым был назначен статус заблокированных или отключённых. Это может быть связано с очисткой базы от неактивных или подозрительных аккаунтов, с повышением безопасности или с поддержкой порядка в системе.
Почему важно удалять заблокированные аккаунты пользователей
Заблокированные аккаунты — это пользователи, которым был запрещён доступ к сайту, но их данные всё ещё хранятся в базе. Если таких пользователей много, это может привести к:
- Увеличению размера базы данных и замедлению работы сайта;
- Потенциальным проблемам с безопасностью, если блокировка была временной;
- Ошибкам и путанице при администрировании пользователей.
Поэтому регулярное удаление таких аккаунтов — хорошая практика для администраторов WordPress.
Как определить заблокированных пользователей в WordPress
В WordPress нет стандартного поля «заблокирован» у пользователя. Обычно блокировка реализуется одним из следующих способов:
- Изменение роли пользователя на специальную, например,
blockedилиdisabled. - Добавление мета-поля пользователя с признаком блокировки.
- Использование плагинов для блокировки, которые могут хранить данные в своих таблицах.
Для примера рассмотрим, что блокировка реализована через роль blocked. Это самый простой способ, позволяющий эффективно управлять пользователями.
Пример кода для удаления пользователей с ролью «blocked»
Ниже приведён пример функции, которая удалит всех пользователей с ролью blocked. Код можно добавить в файл functions.php вашей темы или в отдельный плагин.
function wpset_delete_blocked_users() {
// Получаем всех пользователей с ролью 'blocked'
$blocked_users = get_users( array( 'role' => 'blocked', 'fields' => 'ID' ) );
if ( empty( $blocked_users ) ) {
echo 'Пользователей с ролью blocked не найдено.';
return;
}
foreach ( $blocked_users as $user_id ) {
require_once ABSPATH . 'wp-admin/includes/user.php';
wp_delete_user( $user_id );
}
echo 'Удалено пользователей: ' . count( $blocked_users );
}Вызвать эту функцию можно, например, через AJAX или добавить временный вызов в functions.php и после выполнения удалить вызов, чтобы избежать повторного удаления.
Как добавить и назначить роль «blocked» пользователю
Если у вас ещё нет роли для блокировки, её можно создать следующим кодом:
function wpset_add_blocked_role() {
add_role('blocked', 'Заблокированный пользователь', array(
'read' => false,
'edit_posts' => false,
'delete_posts' => false,
));
}
add_action('init', 'wpset_add_blocked_role');После создания роли можно назначать её пользователям через админку или программно:
function wpset_block_user_by_id($user_id) {
$user = new WP_User($user_id);
$user->set_role('blocked');
}Автоматизация удаления с помощью плагина WPRemark
Если вы не хотите заниматься кодом, можно использовать плагин WPRemark, который позволяет фильтровать пользователей по ролям и массово удалять их из интерфейса. Это удобно для регулярного обслуживания сайта.
Как использовать WPRemark для удаления заблокированных пользователей
1. Установите и активируйте плагин WPRemark с официального сайта.
2. В админке перейдите в раздел управления пользователями, где появится расширенный фильтр по ролям.
3. Отфильтруйте пользователей с ролью «blocked» и выберите их всех.
4. Нажмите кнопку массового удаления.
Плагин сохранит все необходимые проверки и удалит пользователей безопасно.
Удаление пользователей с блокировкой через мета-поле
Если блокировка реализована через мета-поле, например, blocked=1, то для удаления пользователей с таким признаком можно использовать следующий код:
function wpset_delete_users_by_meta_blocked() {
$args = array(
'meta_key' => 'blocked',
'meta_value' => '1',
'fields' => 'ID',
);
$users = get_users($args);
if (empty($users)) {
echo 'Заблокированных пользователей не найдено.';
return;
}
foreach ($users as $user_id) {
require_once ABSPATH . 'wp-admin/includes/user.php';
wp_delete_user($user_id);
}
echo 'Удалено пользователей: ' . count($users);
}Этот метод полезен, если плагин блокировки использует мета-поля для отметки.
Безопасность и резервное копирование перед удалением
Удаление пользователей — операция необратимая. Обязательно перед массовым удалением:
- Создайте резервную копию базы данных.
- Проверьте, что вы удаляете именно тех пользователей, которых необходимо.
- Убедитесь, что у вас есть доступ к сайту и возможность восстановить данные при ошибках.
Также можно сначала переносить удаляемых пользователей в отдельную роль или группу для проверки, а потом выполнять удаление.
Итоговые рекомендации
Удаление заблокированных пользователей в WordPress можно реализовать разными способами, в зависимости от того, как именно устроена блокировка на вашем сайте. Чаще всего это роль или мета-поле. Для разработчиков полезно иметь готовые функции для выборки и удаления пользователей, а администраторам подойдёт плагин WPRemark для удобного управления из интерфейса.
Используйте приведённые примеры кода, адаптируйте их под свои задачи и всегда не забывайте про безопасность и резервное копирование.